0

我试图在用户点击星星后记录特定路线的得分。

$('.ratings_stars').on('click', function() {
        var score=$(this).attr("data-score");
        var route_id=$(this).attr("data-route_id");
  });

它确实记录了分数,但它要么只为路线选择“1”或“0”,要么将其留空。

分数

我尝试了以下方法:

var route_id=1; // displays "1" as to be expected
var route_id='#'; // displays "0"
var route_id=$(this).attr("data-route_id"); // no link to any route
var route_id=$(this).attr("route_id"); // no link to any route

谁能看到我看不到的东西?

编辑:我已经在这里发布了整个代码jsfiddle

非常感谢。

解决方案: var route_id=$(this).parent().attr("id").replace('Route', '');

4

1 回答 1

1

根据评论和这个小提琴http://jsfiddle.net/45AEY/

<h3 class="bar">Beginners</h3>
<div class="content">
    <ul>
    <li><a href="#/routes/1">Route 1</a>
        <div id="Route1" class="rate_widget">
        <div class="star_1 ratings_stars" data-score="1">1</div>
        <div class="star_2 ratings_stars" data-score="2">2</div>
        <div class="star_3 ratings_stars" data-score="3">33</div>
        <div class="star_4 ratings_stars" data-score="4">44</div>
        <div class="star_5 ratings_stars" data-score="5">55</div>
        </div>  
        <div class="total_votes">vote data</div>        
    </li>
    </ul>
</div>

由于没有data-route_id属性,我相信route_id您要捕获的是Route父级的编号div(在上面的示例中,父级div<div id="Route1" class="rate_widget">.

在这种情况下,这条线

var route_id = $(this).attr("data-route_id");

可以切换到这一行:

var route_id = $(this).parent().attr('id').replace('Route','');

并且route_id会有路线的ID。(在上面的示例中它将是1)。

试一试:http: //jsfiddle.net/2B9GM/

Ps.:在您原来的小提琴中,您没有将 jQuery 设置为库。确保你已经在你的小提琴中设置了它,更重要的是,script在你的 HTML 页面中导入(通过标签)。

于 2013-05-05T21:59:43.123 回答