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()" 也不行
怪我咯2017-04-10 14:55:19
这个问题其实应该用 代理来解决,原理就是利用事件的冒泡机制,在父元素上绑定事件,然后判断target是那个元素冒泡上来的,jq中1.2引入了live可以实现类似功能,但在1.7中废弃了,因日delegate代替,现在比较常用on
$('child').live();
$('parent').delegate('')
$('parent').on
上面的三中方式都可实现功能
PHPz2017-04-10 14:55:19
楼上几位把问题都说清楚了。我想给题主建议,赶紧结束这种代码。根本无法维护,写完了过一个星期你自己看着都看不懂。
用framework,用template。用什么都比string拼html强。
看看angular(framework),handlebar(template)。或者项目不好转,用backbone,knockout都行。
ringa_lee2017-04-10 14:55:19
最后一句“给button添加 onlick="img_add()" 也不行”,onlick错了哦,应该是onclick。
另外如果你打算继续用jq添加事件,建议你搜索事件委托,事件冒泡,jq on。这3个关键词,你的问题就能解决了,并且修为更进一步~~~
大家讲道理2017-04-10 14:55:19
使用live来绑定,即使元素当前还没有被添加也是行的。例如:
$('.clickme').live('click', function() {
alert("Live handler called.");
});
相应的需要使用die
来解除绑定。