2016-11-25 51 views
-6

我使用此代碼爲點擊操作上我的網頁裏面的按鈕:

$(document).on("click", $('#' + GlobalVariables.currentUserType).find(".addDocumentToSection"), function (e) { 
     addItemToDocumentGrid(); 
     $('#removeDocumentFromSection').disable(true).addClass("disabled"); 
     $('#removeSelection').disable(true).addClass("disabled"); 
}); 

但事件觸發的只要我點擊頁面中的任何地方。即使是不應該按鈕,我想與$('#' + GlobalVariables.currentUserType).find(".addDocumentToSection")選擇。

$('#' + GlobalVariables.currentUserType).find(".addDocumentToSection")返回一個元件實際上是欲被選中的按鈕。

爲什麼會那樣做的?

回答

0

要附加onClick事件到document元素。嘗試:

var button = $('#' + GlobalVariables.currentUserType).find(".addDocumentToSection"); 
button.on("click", function() { 
    addItemToDocumentGrid(); 
    $('#removeDocumentFromSection').disable(true).addClass("disabled"); 
    $('#removeSelection').disable(true).addClass("disabled"); 
}); 
+0

關於這方面的downvotes顯得苛刻。我們不知道OP想要使用事件委託,而OP說選擇器確實找到了相關的元素;鑑於此,這說明了什麼是錯的,以及如何解決它。 –

+0

Upvoted平衡:鑑於'$()找到()'工作,它似乎是合理的,有沒有必要事件委託,給這個答案。 –

7

如果您想使用事件代表團,第二個參數應該是一個選擇,而不是一個jQuery對象。

$(document).on("click", '#' + GlobalVariables.currentUserType + " .addDocumentToSection", function (e) { 
// ---------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
     addItemToDocumentGrid(); 
     $('#removeDocumentFromSection').disable(true).addClass("disabled"); 
     $('#removeSelection').disable(true).addClass("disabled"); 
}); 

如果你不想使用事件委託,需要調用on的元素要勾上事件:

$('#' + GlobalVariables.currentUserType).find(".addDocumentToSection").on("click", function (e) { 
     addItemToDocumentGrid(); 
     $('#removeDocumentFromSection').disable(true).addClass("disabled"); 
     $('#removeSelection').disable(true).addClass("disabled"); 
}); 

這是所有覆蓋the on documentation

+0

30秒後4票。沒有閱讀的投票? –

+2

@TânNguyễn:或者人們閱讀的很快。如果你熟悉這些概念,不需要超過10-15秒鐘的時間來閱讀上述內容。 –

+0

@TânNguyễn也爲可能的:讀書人的問題,看到了明顯的答案,去加答案,獲取答案已添加的通知,看到它正是他們會把什麼,給予好評而不是增加一個副本 –

-1
$('#' + GlobalVariables.currentUserType).find(".addDocumentToSection").on("click", function(e){ 

}); 

的jQuery可以.on("click"之前使用選擇,這應該爲你工作。