首页 > 使用jquery添加的元素怎样触发事件?

使用jquery添加的元素怎样触发事件?

var i=2;
$(".stock_input a").click(function(){
  str="<p><input type='text' name='stock["+i+"][color]' class='main_input diy_input' value='' /> : <input type='text' name='stock["+i+"][stock]' onkeyup='clearNoNum(this)'' class='main_input diy_input' /> 图片:<input type='text' name='stock["+i+"][img]''  class='main_input diy_input url1' /> <input type='button'  value='选择图片' class='up_btn image1'  /> <span class='stock_close'>X<span></p>";
  i++;
  $(this).before(str);
})

str字符串不用管他,就是点击后添加了几个输入框,后面的选择图片按钮点击时弹出kindeditor的上传图片框,但是不知道该怎么重新绑定点击事件。
给button添加 onlick="img_add()" 也不行


使用live来绑定,即使元素当前还没有被添加也是行的。例如:

$('.clickme').live('click', function() {
  alert("Live handler called."); 
});

相应的需要使用die来解除绑定。


楼上几位把问题都说清楚了。我想给题主建议,赶紧结束这种代码。根本无法维护,写完了过一个星期你自己看着都看不懂。
用framework,用template。用什么都比string拼html强。

看看angular(framework),handlebar(template)。或者项目不好转,用backbone,knockout都行。


这个问题其实应该用 代理来解决,原理就是利用事件的冒泡机制,在父元素上绑定事件,然后判断target是那个元素冒泡上来的,jq中1.2引入了live可以实现类似功能,但在1.7中废弃了,因日delegate代替,现在比较常用on

$('child').live();
$('parent').delegate('')
$('parent').on

上面的三中方式都可实现功能


最后一句“给button添加 onlick="img_add()" 也不行”,onlick错了哦,应该是onclick。
另外如果你打算继续用jq添加事件,建议你搜索事件委托,事件冒泡,jq on。这3个关键词,你的问题就能解决了,并且修为更进一步~~~


on live delegate


请使用事件委托,jq的话就是on方法,live已被移除了


$("body").on("click", ".className", function(){});
使用事件委托的方式

【热门文章】
【热门文章】