有没有更好的方法来做到这一点:
partId = $(this).parent().parent().attr('data-partid') ;
我有一些将行输出到页面上的东西,每一行都包含输入字段。
当用户在输入字段上键入时,它会通过 ajax 将输入保存到数据库中。
为了确保将信息保存到正确的行,我需要发送存储在 div 中的行 ID:
<div id="buyingRow0" data-partid="43293">...
更清洁的方法是执行以下操作:
partId = $(this).closest('div[data-partid]').data('partid');
但我不确定它是否更有效。它甚至可能更慢。
你可以使用closest()
:
var partId = $(this).closest('div').attr('data-partid') ;
如果您的目标 div 有一个 ID(并且您正确使用了 ID 属性),则意味着它是页面上唯一的一个。
$('#buyingRow0').data('partid');
似乎在这里最有意义。
$(this).parent().parent()
正好说两个节点。.closest()
如果您不想过于依赖 DOM 结构,使用as the rest 建议确实很好。
如果data-partid
是您添加到许多标签的通用属性,那么为您关注的行添加另一个布尔指示符也可能很好,例如。,因此您可以在该节点内data-buying-row
拥有其他标签。data-partid
<div id="buyingRow0" data-partid="43293" data-buying-row>
...
</div>
在这种情况下,您将遍历该购买行:
$(this).closest('div[data-buying-row]').data('partid');