$( function() {
$(".addBtn").click( function() {
addNode($(this));
}).end();
})function addNode(cur) {
if(cur.parent().has("ul").size() != 0) {
cur.parent().children("ul:first").append("<li>okok<a href='javascript:void(0);' class='addBtn'>[Add]</a></li>")
} else {
cur.parent().append("<ul><li>new menu<a href='javascript:void(0);' class='addBtn'>[Add]</a></li></ul>");
}
|页面上的HTML代码是:
<div>
<ul id="tree">
<li><a href="#">menu1</a><a href="javascript:void(0);" class="addBtn">[Add]</a></li>
<li>menu2<a href="javascript:void(0);" class="addBtn">[Add]</a></li>
<li>menu3<a href="javascript:void(0);" class="addBtn">[Add]</a></li>
</ul>
</div>但是这样子,使用js动态添加的[Add]按钮不会触发click事件,只有页面上原有的才会触发。代码用firebut看过,没有问题,只是点击add没有反应。这是怎么回事?只能添加 onClick=属性吗?这样子好不爽。。
$(".addBtn").click( function() {
addNode($(this));
}).end();
})function addNode(cur) {
if(cur.parent().has("ul").size() != 0) {
cur.parent().children("ul:first").append("<li>okok<a href='javascript:void(0);' class='addBtn'>[Add]</a></li>")
} else {
cur.parent().append("<ul><li>new menu<a href='javascript:void(0);' class='addBtn'>[Add]</a></li></ul>");
}
|页面上的HTML代码是:
<div>
<ul id="tree">
<li><a href="#">menu1</a><a href="javascript:void(0);" class="addBtn">[Add]</a></li>
<li>menu2<a href="javascript:void(0);" class="addBtn">[Add]</a></li>
<li>menu3<a href="javascript:void(0);" class="addBtn">[Add]</a></li>
</ul>
</div>但是这样子,使用js动态添加的[Add]按钮不会触发click事件,只有页面上原有的才会触发。代码用firebut看过,没有问题,只是点击add没有反应。这是怎么回事?只能添加 onClick=属性吗?这样子好不爽。。
关注ING
不过我知道楼上说的不对,$(".addBtn") 拿class属性没错的
var id = $(this).attr("id");
alert(id);
});用到live函数委派事件,用于动态生成的HTML
关于live函数的用法自己去网上查吧
function addNode(cur) {
alert(cur.parent().find("ul"))
if(cur.parent().find("ul").size() != 0) {
cur.parent().children("ul:first").append("<li>okok<a href='javascript:void(0);' class='addBtn'>[Add]</a></li>")
} else {
cur.parent().append("<ul><li>new menu<a href='javascript:void(0);' class='addBtn'>[Add]</a></li></ul>");
}
}楼主这样。没有has那个方法,用find