0

我有 20 个具有相同课程的 div(生物):

<div class="bio" data-id="<? echo $id; ?>">
  <p>the bio1 text</p>
  <a id="car" href="http://www.mycustomurl.com">my car 1</a>
</div>

<div class="bio" data-id="<? echo $id; ?>">
  <p>the bio2 text</p>
  <a id="car" href="http://www.mycustomurl.com">my car 2</a>
</div>

--------

<div class="bio" data-id="<? echo $id; ?>">
  <p>the bio20 text</p>
  <a id="car" href="http://www.mycustomurl.com">my car 20</a>
</div>

当有人单击 ID 为car的链接时,我会进行此 ajax 调用:

jQuery("#car").click(function(){
    var id = $(".bio").data('id'); /* HERE IS THE PROBLEM, id is always empty */
    jQuery.ajax({  
        type: 'POST', 
        url: 'myajaxurl',  
    data: {  
       action: 'cars',
       id: id
    }
        });  
});

问题是:

如何获得与点击的正确链接对应的正确id 值(var id)?

每个循环都需要一个 jquery 吗?

它似乎不起作用,var id始终为空。

4

3 回答 3

0

我想你想使用.parent()

如:

jQuery("#car").click(function(){
 var id = $(this).parent(".bio").data("id"); /* Maybe this should even be .data("data-id") ? */
 jquery.ajax({ /* etc... */
});
于 2012-09-18T17:23:57.947 回答
0

使用closest.

var id = $(this).closest(".bio").data('id');
于 2012-09-18T17:24:10.733 回答
0

ID 应该是唯一的,并且不应重复。

而是尝试像下面那样绑定您的处理程序,

jQuery('.bio a').click( function(){
   var id = $(this).parent().data('id');
   //..

当你这样做时jQuery("#car").click(function () {,它会将处理程序绑定到第一个匹配的元素,IDcar将只用于第一个 div 组。

于 2012-09-18T17:24:13.330 回答