首页 新闻 会员 周边

关于js动态添加的table

0
悬赏园豆:50 [已解决问题] 解决于 2014-10-25 09:04

我有个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事件,请教大神这里有什么问题的么

帝之晓的主页 帝之晓 | 初学一级 | 园豆:98
提问于:2014-10-25 08:21
< >
分享
最佳答案
1

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(){


    });
}
收获园豆:50
Lucien! | 菜鸟二级 |园豆:371 | 2014-10-25 08:59

非常感谢大神,正是这个原因,已经解决!

帝之晓 | 园豆:98 (初学一级) | 2014-10-25 09:25
其他回答(2)
0

只能说没有判定到事件了,具体为什么,那要看你代码

Yu | 园豆:12980 (专家六级) | 2014-10-25 08:44
0

首先你得明白,事件是注册在具体元素上的。当你绑定事件时,你的按钮还不存在,那么就算后面新增了这样的按钮,也是不会绑定事件的。

提供三种方式给你参考:

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 
})
幻天芒 | 园豆:37175 (高人七级) | 2014-10-25 09:10

大神,拜服!

实在是不好意思,已经先结贴给 @段小贤  了,但是实测您的这三种方法都是可以的,非常感谢您。

 

支持(0) 反对(0) 帝之晓 | 园豆:98 (初学一级) | 2014-10-25 09:32

@帝之晓: :),你使用@段小贤  的方式,注意下我在第二点中提到的问题。共同进步!

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-10-25 10:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册