0
首先,讓我爲這個問題的複雜性道歉,我不能真正地將它分解,因爲複雜性可能是原因的一部分。但是這個邏輯使頁面的活動鏈接點亮和閃爍。JS變量在渦輪鏈接的新頁面上「卡住」
使用turbolinks,在第一頁上一切正常,但當我們切換到另一個頁面時,事情開始發生故障。以前擁有前一頁active
的鏈接仍然會說它通過參數active
的鏈接是true
,即使它不再具有active
的類。
隨着turbolink禁用,一切都按預期工作。
function flicker(elem, active) {
var delay = Math.random() * (2000) + 130;
console.log($(elem).data('name') + ": " + active + ': ' + $(elem).hasClass('active'));
if (active == true) {
// We need specific timers for each link so each can operate with its own
// separate "thread" and be toggled independently of the others.
// Using window['foo'] to handle dynamic variable names.
window['timer-' + $(elem).data('name')] = setTimeout(function() {
window.setTimeout(function() {
$(elem).addClass('powered');
}, 20) // Controls length of flicker.
flicker(elem, true);
$(elem).removeClass('powered');
}, delay);
} else {
clearTimeout(window['timer-' + $(elem).data('name')]);
}
};
$(document).on('turbolinks:load', function() {
// Initiate the current, active link.
$('.navbar a.active').each(function() {
window['timer-' + $(this).data('name')]; // Instantiating dynamic variable.
flicker($(this), $(this).hasClass('active'));
});
});
跟我來。因此,我將控制檯登錄到第3行的第一頁上,並按預期輸出。例如:
nav-1: true: true
將反覆獲取與每個閃爍輸出,指示從第1行的第一連桿active
參數是true
,並且它具有一個類的true
。
但是,如果我第二點擊鏈接進入下一個頁面,然後控制檯將再次登錄:
nav-1: true: true
nav-2: true: true
即使在這種情況下,nav-1
不不有一類active
。