[英]JQuery: on doesn't work properly
我已經創建了動態html按鈕,我想為它們設置click事件。 這是我的html輸出和代碼:
<td style="width:90px;">
<input type="button" class="btn_Yeni" id="btnYeni"></td>
$(".btn_Yeni").on("click", function () {
alert('asd');
});
$(".btn_Yeni").trigger("click");
單擊按鈕后沒有任何反應。 你有什么建議嗎?
由於html按鈕是動態添加的,因此您需要使用event delegation
來注冊事件處理程序,如:
// New way (jQuery 1.7+) - .on(events, selector, handler)
$(document).on('click', '.btn_Yeni', function(event) {
alert('asd');
});
UPDATE
因為,按鈕被添加到表格單元格中,如HTML標記中所示,您可以這樣做:
$('#tableID').on('click', '.btn_Yeni', function(event) {
alert('asd');
});
這會將您的事件附加到#tableID
元素中的任何按鈕,從而減少了檢查整個document
元素樹和提高效率的范圍。
由於您有動態按鈕,因此需要使用事件委派。
僅使用.on()來注冊事件處理程序不會使用事件委托 , 它有一個非常特定的格式來使用事件委托。 事件應附加到頁面中已存在的元素(如下面的文檔對象),然后必須將動態元素選擇器作為第二個參數傳遞給on()
方法
$(document).on("click", ".btn_Yeni", function () {
alert('asd');
});
這是使用動態元素時的方法。
$("body").on("click",".btn_Yeni", function () {
alert('asd');
});
怎么做:
處理程序沒有附加到元素本身(因為它在注冊時不存在) - 所以你將處理程序附加到body
元素。 並通過事件冒泡 - 委托元素到達body
(處理程序實際連接到的位置)時被檢查(反對)。
我已經為您提供了一個小提琴,可以探索動態按鈕添加以及使用on方法進行事件委派。
<ul id="btnCollection">
<li>
<input type="button" class="btn_Yeni" value="Your Button" />
</li>
</ul>
var button = $("#btnCollection:last-child").html();
$("#btnCollection").on("click", ".btn_Yeni", function (event) {
alert("Adding another button");
$("#btnCollection").append(button);
});
DEMO 在此輸入鏈接描述
$(document).on("click", ".btn_Yeni", function () {
alert('asd');
});
function addrow(){
var $tr = $("#baserow")
var $clone=$tr.clone();
$tr.after($clone);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.