我有一个包含嵌套表的html:
<table ....
<tbody ...
<tr ...
<td class="Field">item1_1</td>
<td class="Value">
<table ...
<tbody...
<tr
<td class="Field">0</td>
<td class="Value">
<table ...
....
可点击元素是字段。当用户单击某个字段时,我需要找到包含其表(2个表)的表并检查其元数据。 我试着用:
field.parents("table")[1]
这会返回正确的表,但不允许我查询其元数据:
field.parents("table")[1].data("isArray")
你能帮我弄清楚如何查询包含表的元数据吗?
谢谢, 李
P.S。 我只是设法使用:
field.parent().parent().parent().parent().parent().parent().parent().parent().data("isArray")
但我真的想避免这种丑陋。
答案 0 :(得分:2)
您遇到的问题是对jquery对象建立索引的数组将返回一个dom对象。您可以使用eq
来获取jquery对象。
field.parents("table").eq(1).data("isArray")
如果你能修改html。更简洁的方法是将类分配给您要获取的表,然后使用closest。
field.closest(".someClass").data("isArray")
答案 1 :(得分:1)
看到这个电话
field.parents("table")[1].data("isArray")
我假设你正在使用jQuery.data()方法。 如果是,那么通过索引调用将返回一个HTMLElement而不是jQuery对象。 在这种情况下,请将代码更改为
$(field.parents("table")[1]).data("isArray")
答案 2 :(得分:1)
eq()
将解决问题,但为了简单起见,您可以将id
分配给外部表并仅创建一次table
引用,而无需在每次用户点击时找到它。
还要考虑eq()
用法可能会在另一个表中再次嵌入字段时产生一些mantainance问题,因为您完全依赖parents()
返回的集合的索引来检索最外面的表
否则,如果该表是唯一具有内联data-*
属性的表格,您可以使用
field.closest('table[data-isArray]');