2014-04-10 60 views
0

这对我的作品很大的数据属性和我能够get data-club-id获得使用授权

<!-- this is an example --> 
<a class="clubCode" href="" data-club-id= "1234">join with the code</a> 


$("a.clubCode").on("click",function(e){ 
      e.preventDefault(); 
    var clubId = $(this).data('club-id'); 
alert(clubId) 
}); 

,但如果我需要使用委派喜欢这里:

<a class="editReview" data-review-id="123" href="">Edit</a> 

$(".eventFeedbackBottomContainer").on("click", "a.editReview", function(e){ 
     e.preventDefault(); 
     var reviewId = $(this).data('review-id'); 
     alert(reviewId);   
}); 

reviewId回报undefined

<div class="eventFeedbackBottomContainer"> 
    <div class="tabs"> 
     <ul> 
      <li><a href="#panel1" tabindex="1">Reviews</a></li> 
      <li><a href="#panel2" tabindex="2">Hotels</a></li> 
     </ul> 
    </div> 

    <div class="rightFeedbackBottomContainer"> 
     <a href="/addReview/<?php echo escape($eventReview->getData()->race_id);?>/" id="" class="Smallbut">Add Review</a> 
    </div> 

    <div id="panel1" class="panel"> 
     <div class="feedbacksContainer"> 
      <div class="show-reviews"></div><!-- a.editReview is inside each review loaded from a javascript file in this div--> 
     </div>         
    </div> 

    <div id="panel2" class="panel"/> 
</div> 

我该怎么办?

+0

我没有看到一个'eventFeedbackBottomContainer'随时随地您的标记 – CodingIntrigue

+0

对不起,我想是不是我的问题的地步,我没有张贴什么工作我认为是无关紧要的。我现在将添加它。 – mat

+0

@Rraham请看我编辑的问题。 – mat

回答

0

尝试这种方式

$(".eventFeedbackBottomContainer").on("click", "a.editReview", function(e){ 
    e.preventDefault(); 
    var reviewId = $(this).attr('data-review-id'); //use .attr() for accessing attibutes 
    alert(reviewId);   
}); 

现场演示了之前的页面HTML 5:在HTML 5网页

http://jsfiddle.net/dreamweiver/23XHj/7/

现场演示:

http://jsfiddle.net/dreamweiver/23XHj/8/

编码快乐:)

+0

'.data'无论如何都会返回HTML5数据属性值,所以在这种情况下两者可能是等价的。 – CodingIntrigue

+0

@Rraham:哦,因为OP没有提及任何html5或html4页面,我没有注意到这一点。以及我已经添加了HTML5风格的代码以及工作小提琴。 – dreamweiver

+0

使用'data-'暗示HTML5,但即使是标有 CodingIntrigue

0

Check this article on event delegation.

我只能认为你的类的元素 'editReview' wasnt 'eventFeedbackBottomContainer' 的孩子。除此之外,似乎是按照你写的那样工作。

Link to Jsfiddle

<div class="eventFeedbackBottomContainer"> 
    ... 
    <a class="editReview" data-review-id="123" href="">Edit</a> 
    <a class="editReview" data-review-id="456" href="">Edit</a> 
</div> 
+0

起初想到这一点,但是OP表示'reviewId返回undefined',表明警报执行了,但''。data'没有返回 – CodingIntrigue

+0

@Rraham:我也无法复制'undefined'。纯猜测我猜。 –

0

固定它。问题是,

<a class="editReview" data-review-id= "12345" href="">Edit</a>

在里面<div class="current-review"></div>。一切只要我把它外面

这里JSFiddle