2014-05-06 57 views
0

我想在我的頁面加載後做一次觸發器點擊一次。 許多職位發誓settimeout只發射一次,但在我的情況下,它是無限的! 這是我的許多嘗試之一。jquery如何停止settimeout循環

$(document).ready(function() { 
    setTimeout(function() { 
     $("#btn1").trigger('click'); 
    },1000); 
}); 

我曾嘗試移動到這一個功能的document.ready外面再添加cleartimeout,但隨後從發射完全停息:

$(document).ready(function() { 
    test(); 
}); 
function test() { 
    var t = setTimeout(function() { 
     $("#btn1").first().trigger('click'); 
    },1000); 
    clearTimeout(t); 
} 

我在做什麼錯!?

+0

的setTimeout只運行一次,但觸發點擊可能有問題... –

+0

的循環行爲可能要靠當您單擊會發生什麼。如果它是指向同一頁面的鏈接,則頁面將刷新並重新開始一切。 – Faust

+0

或點擊觸發測試.. odnt使用間隔來運行一次。 – Medda86

回答

0

使用e.stopPropagation(),這可能是因爲事件冒泡。

HTML

<button id="btn1">my button</button> 

JS

$(document).ready(function() { 
    setTimeout(function() { 
     $("#btn1").trigger('click'); 
    },1000); 

    $("#btn1").click(function(e){ 
    console.log('clicked'); 
    e.stopPropagation(); 
    console.log(e); 
    }) 
}); 

CODE

0

使用clearTimeout()中的setTimeout()內,它觸發點擊

之後清除超時
$(document).ready(function() { 
test(); 
}); 
function test() { 
    var t = setTimeout(function() { 
    $("#btn1").trigger('click'); 
    clearTimeout(t); 
}, 1000); 
} 
$("#btn1").on('click',function(){ 
console.log("Clicked"); 
}); 

小提琴:http://jsfiddle.net/6G4pR/