我需要一些帮助完成我的小代码“体验”。每次在我的网站上发布通知时,我都会尝试创建浏览器选项卡通知。几乎所有的代码都能正常工作,但有一件事我无法工作。如何通过点击功能在间隔中停止jquery函数?
if (stop) return;
在代码中间不起作用,但我想在用户关闭通知时将标签标题文本更改回current_title
。
我不是很熟悉编码,很高兴能够感谢所有帮助!
var stop = false;
var current_title = $(document).attr('title');
var titles = [
">>> Neue Meldung <<<",
">> Neue Meldung <<<<",
"> Neue Meldung <<<<<",
">> Neue Meldung <<<<",
">>> Neue Meldung <<<",
">>>> Neue Meldung <<",
">>>>> Neue Meldung <",
">>>> Neue Meldung <<"];
function titleCircle(i) {
if (stop) return;
i = (!i) ? 0 : (i * 1 + 1) % titles.length;
$('title').html(titles[i]);
setTimeout(titleCircle, 1000, [i]);
};
$('div.notice-item-close').click(function() {
stop = true;
document.title = current_title;
});
$('.notice-item').each(function() {
if ($(this).css("display") != "none" || $(this).css("visibility") != "hidden") {
$(document).load(titleCircle());
}
});
var notti_get_notice = function() {
$.ajax({
type: "POST",
data: {
action: 'notti-inotify',
token: notti_Notice.token
},
dataType: "JSON",
url: notti_Notice.ajaxurl,
// On Successful Communication
success: function (data) {
if (data !== null && data !== undefined) {
console.log(data);
jQuery(document).ready(function ($) {
var current_title = $(document).attr('title');
var stop = false;
$('div.notice-item-close').click(function() {
stop = true;
document.title = current_title;
});
var titles = [
">>> Neue Meldung <<<",
">> Neue Meldung <<<<",
"> Neue Meldung <<<<<",
">> Neue Meldung <<<<",
">>> Neue Meldung <<<",
">>>> Neue Meldung <<",
">>>>> Neue Meldung <",
">>>> Neue Meldung <<"];
function titleCircle(i) {
if (stop) return;
i = (!i) ? 0 : (i * 1 + 1) % titles.length;
$('title').html(titles[i]);
var timer = setTimeout(titleCircle, 1000, [i]);
};
$(document).load(titleCircle());
});
$.each(data, function (index, value) {
if (value.stay === 'false') jQuery.noticeAdd({
text: value.text,
stay: false,
type: value.type
});
else jQuery.noticeAdd({
text: value.text,
stay: true,
type: value.type
});
});
}
}
});
};
window.setInterval(function() {
console.log('Fire');
notti_get_notice();
}, notti_Notice.frequency);
你只是想停止的setInterval? – OxyDesign 2014-09-26 00:13:52
我想通过点击div.notice-item-close来立即停止函数titleCircle,并用之前保存的“current_title”替换浏览器选项卡中的无限循环。 – user45836 2014-09-26 00:17:05
也许,不是'titleCircle'内部的'setTimeout',你可以在外部使用'setInterval',将它分配给一个变量,然后在点击时用'clearInterval'停止'setInterval'。 [MDN上的window.clearInterval](https://developer.mozilla.org/fr/docs/DOM/window.clearInterval) – OxyDesign 2014-09-26 00:37:42