我有个js函数动态添加了table,类似这样子的:
function addRow()
{
$("#mytable").append("<tr><td>test</td><td><a class=\"btn btn-priamry btnTest\"></a></td></tr>");
}
这里面有个按钮类名是 btnTest,我想点击这个btnTest的时候,执行动作删除这一行,
代码类似如下这样子:
$(".btnTest").click(function(){
//remove this row
});
现在的问题是为什么死活调用不到这个btnTest 的click事件,请教大神这里有什么问题的么
BootStrap?
先把这个节点(class='btnTest')添加到Dom,再给该类绑定事件,
你的绑定事件放在ready里的?
这样绑定不成功的,因为Dom没有这个元素。
function addRow() { $("#mytable").append("<tr><td>test</td><td><a class=\"btn btn-priamry btnTest\">这是另一行</a></td></tr>"); //绑定事件放这里 $(".btnTest").click(function(){ }); }
非常感谢大神,正是这个原因,已经解决!
只能说没有判定到事件了,具体为什么,那要看你代码
首先你得明白,事件是注册在具体元素上的。当你绑定事件时,你的按钮还不存在,那么就算后面新增了这样的按钮,也是不会绑定事件的。
提供三种方式给你参考:
1、使用在元素上申明onclick="fun()"调用事件;
2、在添加元素后,针对当前元素注册事件,代码如@段小贤 ,但是这段代码有个问题,会把所有的按钮重新注册一次事件,会造成以前的按钮执行两次点击事件。需要改进下:
var $tr = '<tr><td>test</td><td><a class="btn btn-priamry btnTest">这是另一行</a></td></tr>'; $tr.find('.btnTest').click(function(){}); $('#mytable').append($tr);
3、利用事件冒泡,将外层不变的元素上注册事件:
由于mytable是一直存在的,所有可以在它身上挂事件 $('#mytable').on('click', '.btnTest', function(){ //todo })