[英]Jquery on click event not working
我找不到為什么我的代碼無法正常工作的原因。 當我單擊生成的元素時,警報不會觸發。
這是一個小提琴: http : //jsfiddle.net/pZAdP/
和代碼
<button id="addMenuItem">Add Menu Item</button>
<div id="content"></div>
function addMenuItem(){
var span = document.createElement("span");
span.setAttribute("id", "menu_" + inc);
span.innerHTML = " #menu_" + inc++ + " |";
var content = document.getElementById("content");
content.appendChild(span);
}
$("#addMenuItem").click(function(){
addMenuItem();
})
$("#menu_1").on("click", function(){
alert(this.id);
})
你需要改變
$("#menu_1").on("click", function(){
alert(this.id);
})
與:
$("#content").on("click", "#menu_1", function(){
alert(this.id);
})
工作場所
您使用的是jQuery,因此可以輕松實現,在創建元素時添加事件處理程序,這樣就不必擔心創建多個元素時選擇器中ID的遞增
var inc = 1;
function addMenuItem(){
$('<span />', {
id : 'menu_' + inc,
html : '#menu_' + (inc++) + ' |',
on : {
click : function() {
alert(this.id);
}
}
}).appendTo('#content');
}
$("#addMenuItem").click(function(){
addMenuItem();
});
將菜單的onclick放在addMenuItem()函數中。
function addMenuItem(){
var span = document.createElement("span");
span.setAttribute("id", "menu_" + inc);
span.innerHTML = " #menu_" + inc++ + " |";
var content = document.getElementById("content");
content.appendChild(span);
$("#menu_1").on("click", function(){
alert(this.id);})}
請記住,您是按ID選擇的。 如果按類選擇,則將單擊處理程序放在方法外部將起作用。
您需要在事件委托中使用.on
句法
$(parent-selector).on(event,target-selector,callback);
注意: parent-selector必須是綁定事件時DOM中存在的parent元素,通常人們使用document
和body
,但是為了性能起見,您必須擁有最接近目標的父元素
例
$(document).on("click",".button",function(){
alert("Button Clicked");
});
var inc = 1;
function addMenuItem(){
var span = document.createElement("span");
span.setAttribute("id", "menu_" + inc);
span.innerHTML = " #menu_" + inc++ + " |";
var content = document.getElementById("content");
content.appendChild(span);
$("#menu_1").on("click", function(){
alert(this.id);
})
}
$("#addMenuItem").click(function(){
addMenuItem();
})
您正在嘗試將事件添加到尚不存在的元素。
嘗試這個:
它適用於ID為menu_ *的所有動態范圍:
var inc = 1;
function addMenuItem(){
var span = document.createElement("span");
span.setAttribute("id", "menu_" + inc);
span.innerHTML = " #menu_" + inc++ + " |";
var content = document.getElementById("content");
content.appendChild(span);
}
$("#addMenuItem").click(function(){
addMenuItem();
})
$(document).on("click", "[id^='menu_']", function(){
alert(this.id);
})
選擇該元素時,該元素不在頁面上,請選擇生成的元素:
$(document).on("click","#menu_1", function(){
alert(this.id);
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.