2013-06-18 242 views
4

我设法让细胞集合在一排点击此行时如下:如何用jQuery获取html表格单元格的文本值?

$('.NamesGridClass tbody tr').bind('click', function() { 
    var ch = $(this).children(); 
    alert(ch[0] + ' ' + ch[1]); 
}); 

上述选择片段成功地显示:

[对象HTMLTableCellElement] [对象HTMLTableCellElement]

我试过ch[0].html(),ch[0].val(),ch[0].text(),并且得到错误。我怎样才能在这里获得我的细胞内容?

回答

3

为了使用.html(),你需要把这些对象到jQuery的对象:

$(ch[0]).html() 

同样适用于你想申请任何其他有效的jQuery方法。

+0

为什么?只需'ch.html()' – jQuery00

+1

@ jQuery00,当然,这是做同样的事情和少字符。但重点是'.html()'只适用于jQuery对象。 'ch'和'$(ch [0])'都是jQuery对象; 'ch [0]'不是。 –

6

当你从你的jQuery得到一个数组访问的商品,请使用本机代码

ch[0].innerHTML 
+1

这是一个jQuery标记的问题,所以建议OP本地化似乎不合适。是的,你的“答案”是有效的,但它并不能帮助OP理解为什么他所尝试的不是。 –

+0

因为jQuery'.html()'使用相同的方法。 – jQuery00

+1

再加上一些可能性以确保交叉浏览器的兼容性。 '.innerHTML'更快; '.html()'更安全。 –

2

,你回到普通的旧JavaScript元素,没有jQuery的元素。您可以使用javascript .innerHTML,也可以使用jquery选择器对值进行双重包装。我会推荐使用.innerHTML,因为它更简单,所以

$('.NamesGridClass tbody tr').bind('click', function() { 
     var ch = $(this).children(); 
     alert(ch[0].innerHTML + ' ' + ch[1].innerHTML); 
    }); 
+0

我会小心这个建议。如果OP必须支持旧浏览器,则使用'.html()'更安全。 –

相关问题