[英]jQuery event firing twice after .load()
我遇到過一個問題,即在調用$ .load()之后jQuery事件會觸發兩次。 事件處理程序放在load()回調函數中,這似乎是事件在腳本上觸發兩次的唯一地方。
我已經嘗試添加event.stopPropogation()和event.preventDefault(),因為這些似乎是jQuery事件觸發多個的常見建議。 我不確定我的代碼是不正確的冒泡還是什么。 任何反饋都會有所幫助。
以下是您看到行為的一些代碼的摘錄。
$("div.questions").load("question_source.php #simplified_a", function(){
...
// Line 1
$("#some_id").change(function(){
cantBeNegative(this);
adjusted_gross_income = $(this).val();
console.log(adjusted_gross_income);
// event.stopPropagation();
// event.preventDefault();
});
您可以使用我在那里的console.log位清楚地看到事件觸發兩次。 任何意見,將不勝感激!
好的,我根據一些建議檢查了實時頁面上的所有內容,當問題發生時,肯定只有一個<div id =“questions”>存在。 所以,它似乎不是一個HTML問題。
我還檢查了事件是否實際被調用了兩次,據我所知,事件只被調用一次。
現在,我添加了一個附加到文檔的.on()事件,該事件在動態創建的元素上調用,並且只觸發一次。 .on()不在.load()回調中調用。 這是在頁面上的其他輸入框之一上使用的示例,它沒有任何問題:
$(document).on('change', "#SWA_mothers_income", function(){
console.log("mothers income changes from on()");
});
因此,它可以正常工作,但是當在.load()回調函數中的相同輸入上進行測試時,它會觸發兩次,無論它是如何調用的。 所以,在我看來,這幾乎肯定是.load()的一個問題。 我不會說自己是這方面的專家,所以如果有人能解決問題,我很想知道答案。 就目前而言,我將使用.on()重寫此代碼。
添加$(“#some_id”)。unbind('change'); 在'change(function())位之前就行了!
添加此行
$("#some_id").unbind('change');
之前
$("#some_id").change(function(){});
我不是說這會解決你的問題,但是你需要通過事件來引用它。
$("#some_id").change(function(event){
cantBeNegative(this);
adjusted_gross_income = $(this).val();
console.log(adjusted_gross_income);
event.stopPropagation();
event.preventDefault();
});
您可能有兩個帶有“問題”類的div,因此您可以將更改功能綁定兩次。
如果您將更改功能更新為以下內容,則會在重新添加之前取消綁定更改事件。 這將確保您只有一次綁定的函數;
$("#some_id").unbind('change').change(function(event) {
event.preventDefault();
cantBeNegative(this);
adjusted_gross_income = $(this).val();
console.log(adjusted_gross_income);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.