当有多个具有相同类的标记时,计算锚标记点击次数

时间:2015-07-30 03:08:41

标签: jquery asp.net-mvc

我有一个循环,我想拉进5首最流行的歌曲。我想简单地捕获点击该歌曲的链接的次数。我将按钮点击计数返回到ASP.NET MVC中的Action Result方法,然后将其保存到数据库中。当我运行这个时,我得到了未定义。我也为循环中的每个记录得到这个错误,在这种情况下,这是5次。我在LINQ声明中只拿了5个。

这是我的观点:

@foreach (var song in popularsongs.OrderByDescending(song => song.Fightsong.PlayCount).Take(5))
{
    <tr>
        <td onclick="location.href = '@Url.Action("Details", "Team", new {id = song.Teams.TeamId})'">
            <img src="@Url.Content(@song.Teams.LogoUrl)" height="35" width="35"/>
        </td>
        <td>@song.Fightsong.songname</td>
        <td>@song.Fightsong.duration</td>
        <td><a href="@Url.Content(@song.Fightsong.songurl)" class="playbtn"><i data-userid="@Url.Content(@song.Fightsong.FightSongId.ToString())" class="fa fa-play"></i></a></td>
        <td><span class="counter">1</span></td>
    </tr>
}  

所以第二个到最后一个表列有一个FontAwesome播放按钮。我把它包裹在一个锚标签内。单击该锚标记后,对其进行计数并将其发送给我的控制器。

这是我的jQuery:

$(document).ready(function() {            
    $(".playbtn").click(function (e) {
        var clickedUserId = $(this).data('userid');
        alert(clickedUserId);
        //$('.userdata-container').load('ajax/userpage_' + clickedUserId + '.html');
    });
});

这是返回undefined。

我意识到当我点击按钮时,我的播放按钮图标将变为暂停,以便可以暂停播放歌曲。这将导致两次点击,但它应该只有一次。因此,如果有更好的方法来捕获它,请告知。

1 个答案:

答案 0 :(得分:3)

data-userid标记上有<i />个属性。改变这个:

var clickedUserId = $(this).data('userid');

......对此:

var clickedUserId = $(this).find('i').data('userid');