0

有没有更好的方法来做到这一点:

partId = $(this).parent().parent().attr('data-partid') ;

我有一些将行输出到页面上的东西,每一行都包含输入字段。

当用户在输入字段上键入时,它会通过 ajax 将输入保存到数据库中。

为了确保将信息保存到正确的行,我需要发送存储在 div 中的行 ID:

<div id="buyingRow0" data-partid="43293">...
4

4 回答 4

1

更清洁的方法是执行以下操作:

partId = $(this).closest('div[data-partid]').data('partid');

但我不确定它是否更有效。它甚至可能更慢。

于 2012-07-24T06:44:48.907 回答
0

你可以使用closest()

var partId = $(this).closest('div').attr('data-partid') ;
于 2012-07-24T06:47:39.557 回答
0

如果您的目标 div 有一个 ID(并且您正确使用了 ID 属性),则意味着它是页面上唯一的一个。

$('#buyingRow0').data('partid');

似乎在这里最有意义。

于 2012-07-24T06:53:29.653 回答
0

$(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');
于 2012-07-24T07:12:41.737 回答