事情  是酱紫的...
我用jquery:<div class=mybox>
 <button id=click>soso</button>
</div>
<button class=newclick>socos</button>   $("#click").click(function(){
     $(".mybox").append("<button class=newclick>socos</button>");
   });   $(".newclick").click(function(){  
       alert('test');
   })在这个例子中,点击soso按钮以后,再点击出现在div框中的socos按钮,是不会弹出test的
想要如愿的话,那必须在click的定义事件中重新定义一边newclick的点击事件,否则无效:   $("#click").click(function(){
     $(".mybox").append("<button class=newclick>socos</button>");
     $(".newclick").click(function(){  
       alert('test');
     })
   })
   $(".newclick").click(function(){  
       alert('test');
   })请问大家,有没有遇到过这种问题,有没有办法可以避免对newclick点击事件的重复定义?谢谢!
代码如有错误请忽视,手敲滴。

解决方案 »

  1.   

    $(".newclick").live('click', function() {  //live()方法绑定事件,具体看手册
        alert('test');
    });
      

  2.   

    bind(type,[data],fn)
    为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数。
    这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。多数情况下,可以把事件处理器函数定义为匿名函数(见示例一)。在不可能定义匿名函数的情况下,可以传递一个可选的数据对象作为第二个参数(而事件处理器函数则作为第三个参数),见示例二。
    返回值jQuery
    参数type (String) : 事件类型data (Object) : (可选) 作为event.data属性值传递给事件对象的额外数据对象fn ( Function) : 绑定到每个匹配元素的事件上面的处理函数
    示例当每个段落被点击的时候,弹出其文本。jQuery 代码:
    $("p").bind("click", function(){
      alert( $(this).text() );
    });你可以在事件处理之前传递一些附加的数据。jQuery 代码:
    function handler(event) {
      alert(event.data.foo);
    }
    $("p").bind("click", {foo: "bar"}, handler)通过返回false来取消默认的行为并阻止事件起泡。jQuery 代码:
    $("form").bind("submit", function() { return false; })通过使用 preventDefault() 方法只取消默认的行为。jQuery 代码:
    $("form").bind("submit", function(event){
      event.preventDefault();
    });通过使用 stopPropagation() 方法只阻止一个事件起泡。jQuery 代码:
    $("form").bind("submit", function(event){
      event.stopPropagation();
    });