2014-08-31 44 views
-2

我有这样10“TR”标签类的名字:如何获得一个HTML标签的属性值,使用JavaScript的

<tr class="jtable-data-row jtable-row-even" data-record-key="13"> 
<td class="jtable-selecting-column"> 
<input type="checkbox"> 
<label for=""> 
<span></span> 
</label> 
</td> 
</tr> 

<tr class="jtable-data-row" data-record-key="11"> 
<td class="jtable-selecting-column"> 
<input type="checkbox"> 
<label for=""> 
<span></span> 
</label> 
</td> 
</tr> 

我怎么能得到的值“数据记录键”,如果它是复选框被选中?我应该使用哪个类别或ID名称?

而且我必须说我不能更改html代码。

回答

0

假设您正在对复选框中的事件做出响应,则事件处理程序中的this将引用与该事件相关的复选框。所以,在事件处理程序:

var key = $(this).closest('tr').attr('data-record-key'); 
  • this - 复选框元素与事件相关的

  • $(...) - 把它包在一个jQuery实例

  • .closest('tr') - 查找其最近的祖先那a tr

  • .attr('data-record-key') - 从它那里得到

或者在data-record-key属性,而不是.closest('tr')你可以使用.closest('[data-record-key]')发现具有属性最近的祖先。


或者,如果你想找到钥匙的这已选中每个复选框,可以查询像这样:

var checkedRecordKeys = $("[data-record-key] input[type=checkbox]").map(function() { 
    return this.checked 
       ? $(this).closest("[data-record-key]").attr("data-record-key") 
       : undefined; 
}).get(); 

checkedRecordKeys将所有data-record-key值的数组对于选中复选框的行。

0

只需添加一个选择 - 你也可以使用data()这样的数据属性值:

$("input").on("click", function() { 
var dVal = $(this).closest("tr").data("recordKey"); 
alert(dVal); 
}); 

<tr class="jtable-data-row jtable-row-even" data-record-key="13">

小提琴:Getting data value using data()

参考jQuery的数据:api.jquery.com/data/

要访问数据值,数据属性的名称是lo选择“数据”和连字符(如果有的话);连字符后面的第一个字符变为驼峰,因此data-record-key的访问为recordKey

相关问题