我需要一些幫助完成我的小代碼「體驗」。每次在我的網站上發佈通知時,我都會嘗試創建瀏覽器選項卡通知。幾乎所有的代碼都能正常工作,但有一件事我無法工作。如何通過點擊功能在間隔中停止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