更改事件在所有元素上都不可用 - 因此即使div
元素的內容發生更改也不會觸發。
更改事件可用於表單元素。
它看起來像你需要的是制定出當一個特定的形式元素變得可用,你可以使用的間隔檢查爲:
var checkForInputTimer;
var checkForInput = function() {
if ($("#checkout_provider_checkout_moneyorder").length > 0) {
window.clearInterval(checkForInputTimer);
alert("Do your processing here");
}
};
checkForInputTimer = window.setInterval(checkForInput, 2000);
在這個例子中,我只是通過ID檢查的元素,這是鑑於ID必須是唯一的最有效的搜索。
您也可以創建一個自定義事件,但您必須記住要使用更新div
元素的任何代碼觸發事件。我已經創造了這個JS Fiddle:
$('div.provider_name').bind('contentChanged', function(event, data) {
if ($('#checkout_provider_checkout_moneyorder').length > 0) {
alert('Do your processing here');
}
});
而且無論你更新div
,你觸發該事件:
$('div.provider_name').html('<input type="text" name="example" id="checkout_provider_checkout_moneyorder" value="example">')
.triggerHandler('contentChanged');
DIV的沒有'change'事件。爲了解決這個問題,你需要使用'mutation observer'或者一個高層的DOM請求,比如'DOMNodeInserted'。 – Ohgodwhy 2013-04-10 07:00:55
請參閱:http://stackoverflow.com/questions/1091661/detect-element-content-changes-with-jquery – Cristy 2013-04-10 07:02:11
另外,當你真正改變div的內容時,爲什麼不'觸發'change事件? – Cristy 2013-04-10 07:03:34