2011-09-23 28 views
13

在很多情況下,我需要在加載後將行爲綁定到元素,然後在事件觸發後(如「更改」)。 我認爲最好的辦法是讓它在同一條直線:Jquery:綁定加載+同時更改

$('#element_id').bind('load, change', function() { 
... 
}); 

但是,這僅適用於「變革」,而不是「負荷」。有一個更好的方法?

+0

我刪除了逗號,但它無法正常工作。我認爲在加載時會有一些限制 – max

回答

36

我碰到了同樣的問題絆倒了。刪除逗號是不夠的,至少不會在這種情況下:

$(document).ready(function(){ 
    $('#element_id').bind('load change', function() { 
     ... // (this DOESN'T get called on page load) 
    }); 
}); 

我猜load事件$(document).ready()之前被觸發。

這是一個簡單的解決方案:

$(document).ready(function(){ 
    $('#element_id').bind('change', function() { 
     ... 
    }); 
    $('#element_id').trigger('change'); 
}); 
+0

即使這樣也會使更改事件循環十億次。不知道爲什麼。我嘗試了這種方法和其他人,它只是想要循環。 –

+0

你是否在觸發函數內的事件?它不應該循環,在某個地方肯定有錯誤。您可以嘗試製作最小的錯誤案例並在單獨的問題中發佈代碼;最有可能你會在點擊「發佈」按鈕之前找出它。 :) – johndodo

+0

不在函數內部觸發它。 $('#employeeDropDown')。on('change',function(event){var form = $(event.target).parents(「form」); form.submit(); })。trigger '更改');或者甚至當你把它放在上面時,都會導致它循環。 –

1

難道你只需要刪除逗號?

+0

要添加:http://api.jquery.com/bind/ –

4

對於已經加載的內容,當你想運行事件的功能,也馬上,你可以用你自己命名的自定義事件以避免觸發內置事件中來自庫等的任何現有綁定,例如

$(".my-selector").on("change rightnow", function() { 
    // do stuff... 
}).triggerHandler("rightnow");