$( 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=属性吗?这样子好不爽。。

解决方案 »

  1.   

    $(".addBtn") 多了一个点吧。
      

  2.   

    我也遇到同样的问题了,和楼主一模一样
    关注ING
    不过我知道楼上说的不对,$(".addBtn") 拿class属性没错的
      

  3.   

    在网上查了一下,解决方法如下,假设有你的<a>标签中有id属性$(".addBtn").live('click', function() {  
       var id = $(this).attr("id");
       alert(id);  
    });用到live函数委派事件,用于动态生成的HTML
    关于live函数的用法自己去网上查吧
      

  4.   


    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
      

  5.   

    应该用live,因为是动态添加的,所以不能直接使用click,需要委派
      

  6.   

    onClick有时候会不灵的,所以,如果不灵的时候,你可以直接写在元素那里吧.写在文件里有时候在运行的时候会没有效果.我们以前做项目也遇到过这种问题.