0

我正在开发论坛中的投票功能。我正在遍历帖子的答案,每个答案都有一个唯一的 ID。每个“答案”都有一些文本、日期和其他数据。

我还添加了一张用户点击投票的图片,其中包含一个类:

<asp:Image runat="server" ImageUrl="~/Resources/Images/UpVoteImg.png" CssClass="upvote"/>

在我的脚本中,我使用类捕获所有点击事件upvote

<script>
    $('.upvote').click(function () {
        var url = '<%= ResolveUrl("~/services/forumservice.asmx/voteup") %>';
        var userId = <%=SystemContext.Instance.SystemUser.UserId %>;

        var data = '{"entry":"' + 'HOW_DO_I_GET_YOU?' + '", "userid":"' + userId + '"}';
        $.ajax({
            type: "POST",
            url: url,
            contentType: "application/json; charset=utf-8",
            data: data,
            success: function () {
                alert('Thanks');
            },
            error: function () {

            }
        });
    });
</script>

我的问题:单击此图像时,我想使用答案的 ID 调用 Web 服务。

我尝试过/想到了什么

  • 如果将某些数据属性添加到图像中,我确信this关键字是一种方法。我找不到一个例子(可能是错误的搜索词)
  • 在图像上创建一个 onclick() 设置一个私有字段,然后我读入我的点击事件(是的,我想避免这种情况)
4

1 回答 1

3

您将希望在 jQuery中使用closest和方法的组合。attr

例如:

var userId = $(this).closest(.answercontainer).attr('id');

$(this)是被点击元素的 jquery 对象

.closest(selector)向上遍历 DOM 树,直到找到选择器的匹配项

.attr('id')为您提供遍历到元素的 id 属性中的值

如果 ID 在您的 DOM 中的其他位置,您可能需要查看其他一些遍历方法,例如siblingsfind

于 2013-09-07T22:41:35.147 回答