2012-03-29 53 views
0

我想知道是否有人可以告诉我为什么以下不起作用。当用户点击表tbody tr

$("tbody[name=leadstores] tr").live('click',function(e){ 
     alert("clicked"); 
     alert(this.attr("id")); 
}); 
+2

你能张贴您的HTML样本? – twaddington 2012-03-29 23:08:02

+0

.live已经过时了。你必须使用旧库的原因吗?使用。点击(函数( ){});而不是 – 2012-03-29 23:08:46

+1

@IsaacFife'click'不能替代委托方法od像'live()'...使用'on()'更合适 – charlietfl 2012-03-29 23:11:12

回答

2

您的根本问题是需要在jQuery函数中包装this。否则,你不能使用jQuery的方法。

alert($(this).attr("id")); 

虽然这不会给你的JavaScript错误贡献,则不应使用任何东西的name属性接受输入的元素。

此外,.live()已从jQuery 1.7折旧。您应该使用.on()

+0

名称属性对于TBODY元素无效。它不限于INPUT元素,它对以下所有元素都是有效的(并且是必需的):BUTTON,TEXTAREA,APPLET,SELECT,FORM,FRAME,IFRAME,IMG,A,INPUT,OBJECT,MAP,PARAM和META。 – RobG 2012-03-29 23:57:39

0

几件事情:

this不是一个jQuery对象,必须被包裹在$(this)使用jQuery方法

确定TBODYname属性? TBODY不是一件普通的事情。如果没有一个名称,然后选择不会觉得

+0

我将它添加到我的tbody中。 – RussellHarrower 2012-03-30 00:01:15

+0

增加了什么?如果不工作发布你的HTML – charlietfl 2012-03-30 00:03:12

0

您提供的代码示例不工作(尽管,正如其他人所指出的那样,你需要一个jQuery包装来包装this

这里的你的代码的例子(有一些支持HTML)

http://jsfiddle.net/Wmswm/