我正在研究 asp.net mvc 3。我有以下结构,
<tr data-uid="123">
<td>
<a href="#" id="click">Click Me</a>
</td>
</tr>
现在我想找到标签数据属性值。我试过像,
$("a#click").click(function(){
var i= $(this).parent('td').parent('tr').data('uid');
});
但对我不起作用。请指导我。
我正在研究 asp.net mvc 3。我有以下结构,
<tr data-uid="123">
<td>
<a href="#" id="click">Click Me</a>
</td>
</tr>
现在我想找到标签数据属性值。我试过像,
$("a#click").click(function(){
var i= $(this).parent('td').parent('tr').data('uid');
});
但对我不起作用。请指导我。
closest
如果不想在每个级别爬上父级,您可以使用该方法获取查询的选择器的最近父级。
$("#click").click(function(e){
e.preventDefault();
var $i = $(this).closest('tr').attr('data-uid');
console.log($i);
var $j = $(this).closest('tr').data('uid');
console.log($j);
});
e.preventDefault()
只是为了防止默认操作。如果不需要,可以将其删除。
还要确保您tr
包含在表格标签内以使其正常工作..
$("a#click").click(function(e){
e.preventDefault();
var i = $(this).closest('tr').attr('data-uid');
console.log(i);
var j = $(this).closest('tr').data('uid');
console.log(j);
});
使用.closest()
:
var $row = $(this).closest("tr");
使用.parent()
:
检查此.parent()
方法。这是 a.prev()
和的替代方案.next()
。
var $row = $(this).parent() // Moves up from <button> to <td>
.parent(); // Moves up from <td> to <tr>
<td>
var $row = $(this).closest("tr"), // Finds the closest row <tr>
$tds = $row.find("td"); // Finds all children <td> elements
$.each($tds, function() { // Visits every single <td> element
console.log($(this).text()); // Prints out the text within the <td>
});
<td>
var $row = $(this).closest("tr"), // Finds the closest row <tr>
$tds = $row.find("td:nth-child(2)"); // Finds the 2nd <td> element
$.each($tds, function() { // Visits every single <td> element
console.log($(this).text()); // Prints out the text within the <td>
});
.closest()
- 获取与选择器匹配的第一个元素.parent()
- 获取当前匹配元素集中每个元素的父元素.parents()
- 获取当前匹配元素集中每个元素的祖先.children()
- 获取匹配元素集中每个元素的子元素.siblings()
- 获取匹配元素集中每个元素的兄弟姐妹.find()
- 获取当前匹配元素集中每个元素的后代.next()
- 获取匹配元素集中每个元素的紧随其后的兄弟.prev()
- 获取匹配元素集中每个元素的前一个兄弟元素您的代码应该按原样工作,但您可以使用 parent('tr') 而不是使用多个 .parent()。http://api.jquery.com/parents/
$(function() {
$("a#click").click(function(){
var i= $(this).parents('tr').data('uid');
});
});
演示:http: //jsfiddle.net/mchambaud/G5jM8/1/
你试过.attr()
吗?
$("a#click").click(function(){
var i= $(this).parent('td').parent('tr').attr('data-uid');
console.log( i );
});
用这个:
var i= $(this).parent('td').parent('tr').attr('data-uid');
.closest()
- 获取匹配选择器的第一个元素
.parent()
- 获取当前匹配元素集中每个元素的父元素
.parents()
- 获取当前匹配元素集中每个元素的祖先 - 获取匹配元素集中
.children()
每个元素的子元素
.siblings()
- 获取匹配元素集中每个元素的兄弟
.find()
- 获取当前匹配元素集中每个元素的后代 - 获取匹配元素集中每个元素
.next()
的紧随其后的兄弟 - 获取每个元素的
.prev()
前一个兄弟匹配元素集中的元素
这将帮助你