var counter = 0;
jQuery("#div1, #div2").fadeIn('300',function(){
{
counter++;
console.log(counter);
}
上面的代碼將打印「1」和「2」,因爲jQuery fadeIn隱含在兩個不同的DOM對象上。 反正有沒有違反這些規定而只能運行一次?jQuery fadeIn在其回調中運行兩次
var counter = 0;
jQuery("#div1, #div2").fadeIn('300',function(){
{
counter++;
console.log(counter);
}
上面的代碼將打印「1」和「2」,因爲jQuery fadeIn隱含在兩個不同的DOM對象上。 反正有沒有違反這些規定而只能運行一次?jQuery fadeIn在其回調中運行兩次
這是一個快速的解決方案,但不是最好的
var myFlag = true;
jQuery("#div1, #div2").fadeIn('300',function(){
{
if(myFlag == true)
{
// write the code here
myFlag = false;
}
}
希望這有助於...穆罕默德。
這種解決方案可能是對我最好的一個,因爲我使用jQuery v1.4.2並且無法更新它 – Alon
您明確告訴它運行兩次,因爲您已經定義了兩個項目的選擇器。如果你希望它運行一次,要求它在一個項目上運行:
jQuery("#div1")
感謝flem這是這個問題的正確答案:只是將它們分成兩個句子: jQuery(「#div1」)。fadeIn('300' ); 。 的jQuery( 「#DIV2」)淡入( '300',函數(){{ 櫃檯 ++; 的console.log(櫃);} ) – Anas
一個簡單的辦法:
$("#div1").fadeIn(300);
$("#div2").fadeIn(300,function(){
// do something only once
});
最簡潔的解決方案是使用jQuery's promise system:
$.when($("#div1, #div2").fadeIn('300')).done(function(){
// do something only once
});
測序代碼的條款:
jQuery("#div1, #div2").fadeIn('300',function(){
counter++;
console.log(counteR);
});
相同
jQuery("#div1, #div2").each(function(){
jQuery(this).fadeIn('300',function(){
counter++;
console.log(counteR);
});
})
所以你的回調將在jQuery的1.6火每個元素
使用新.promise(),它是爲了解決多個回調問題,使用它像這樣:
var counter = 0;
jQuery("#div1, #div2").fadeIn('300').promise().done(function()
{
counter++;
console.log(counter);
});
你想每個元素有一個計數器嗎?你想做什麼 ? –
@dystroy,我只需要在回調函數中做一些東西 – Alon