我有一个表,通过jQuery,我想从按下按钮的tr中选择firstname的文本。
tr行看起来像:
....
<tr id = "2">
<td>
<input type="checkbox">
</td>
<td id = "firstname">
John
</td>
<td id = "lastname">
Doe
</td>
<td>
<button id = "2" class="button">change</button>
</td>
</tr>
....
上面的那个按钮链接到jQuery:
$(".button").click(function(){
var element = $(this);
var id = element.attr("id");
var newusername = $("tr#"+id+" > td#firstname").html();
alert(newusername);
});
为什么我的选择器不起作用?
答案 0 :(得分:2)
由于ID必须是唯一的,请尝试...
<tr id = "2">
<td>
<input type="checkbox">
</td>
<td class = "firstname">
John
</td>
<td class = "lastname">
Doe
</td>
<td>
<button data-id = "2" class="button">change</button>
</td>
</tr>
......和......
$(".button").click(function(){
var element = $(this);
var id = element.data("id");
var newusername = $("#" + id + " > .firstname").html();
alert(newusername);
});
将名称ID更改为类并更改选择应该有效。此外,只有一个ID为2.我在按钮上使用了data-id
,这样我仍然可以选择值是什么,并且没有复制id
。
注意:强>
data-
&#34;数据短划线&#34;属性是我在这里用来更快地捕获属性的属性; jQuery有一个.data()
函数,专门查找这些类型的属性。
<强> .data() link 强>
答案 1 :(得分:0)
您似乎有几个具有相同ID的元素。在这种情况下,正确的用法是使用类:
<td class="firstname">
...
<td class = "lastname">
然后您的选择器变为:$("tr#"+id+" > td.firstname")