我有一个表行的click函数,需要传递行中前两个tds的内容。
// Assign a click handler to the rows
$('#supportTables1 tr').click(function ()
{
var firstTd = $(this).find('td').html();
//need to get the next td. below line doesn't work.
var secondTd = $(this).find('td')[1].html();
window.open('snglContactList.php'+'?search_word='+firstTD+'?list_name=secondTd);
});
我可以得到第一个td就好了,但是我很难理解我访问第二个td非常简单的问题(我尝试过设置它的索引的不同方法)。
答案 0 :(得分:5)
数组表示法[1]
返回一个DOM元素,而不是jQuery对象,所以你不能在它上面使用.html()
(一个jQuery方法)。使用jQuery函数.eq()
来获取元素:
// Assign a click handler to the rows
$('#supportTables1 tr').click(function ()
{
var firstTd = $(this).find('td').eq(0).html();
var secondTd = $(this).find('td').eq(1).html();
window.open('snglContactList.php'+'?search_word='+firstTD+'?list_name='+secondTd);
});
答案 1 :(得分:0)
表行拥有自己包含的单元格集合,可由cells
属性访问。
这样做:
var firstTd = this.cells[ 0 ].innerHTML;
var secondTd = this.cells[ 1 ].innerHTML;
或者你坚持使用jQuery解决方案,执行此操作:
var firstTd = $(this.cells[ 0 ]).html();
var secondTd = $(this.cells[ 1 ]).html();
请注意,第一个版本最快,因为它直接访问属性。
答案 2 :(得分:0)
$(this).find('td')将返回所有< td>在单击的行内。您可以使用eq(idx)方法获取特定索引的值:
$('#supportTables1 tr').click(function ()
{
var tds = $(this).find('td');
var firstTd = tds.eq(0).text();
var secondTd = tds.eq(1).text();
window.open('snglContactList.php'+'?search_word='+firstTD+'?list_name='+secondTd);
});
这里的工作示例(使用警报而不是window.open ...):