data属性在多个tr中不起作用

时间:2017-01-27 09:39:47

标签: javascript jquery

我正在尝试获取数据属性值,它返回一些未定义的值。 我想,我做错了什么。 以下是我的代码,请看一下。

$(document).on("click",".adm tr .link",function(){
  // alert("hii");
  var company_id = $(this).data("id")
  console.log($(this).data("id"));
  // window.location.href = "userCompany.html"
})
<?php foreach ($car_listing as $car_listings) { ?>
  <tr data-id="<?php echo $car_listings->company_id;?>">
    <td class="link">
      <img src="<?php echo image($car_listings->image);?>">
    </td>
    <td class="link"><?php echo $car_listings->name;?></td>
  </tr>
<?php } ?>

有人有任何建议吗?

3 个答案:

答案 0 :(得分:5)

data-id元素在<tr>元素上定义,但$(this)引用<td class="link">(因为您在{{1}上绑定了click事件}})。

请改为尝试:

".adm tr .link"

请参阅parent

答案 1 :(得分:2)

您没有引用正确的元素。像这样找到closest tr

var company_id=$(this).closest('tr').data("id")

这样即使元素嵌套,您也可以引用正确的tr标记。

答案 2 :(得分:1)

$(this)指向td,而不是具有data-id属性的tr。

<script type="text/javascript">
$(document).on("click",".adm tr .link",function(){
  //alert("hii");
  var company_id=$(this).parents('tr').data("id")
   console.log($(this).data("id"));
 // window.location.href = "userCompany.html"
})
</script>