我正在论坛中开发投票功能。我正在循环浏览帖子的答案,每个答案都有一个唯一的 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服务。
我尝试过/想到了什么:
- 我确信这个关键字是一种方式,如果将一些数据属性添加到图像中。我找不到示例(可能是错误的搜索词)
- 在图像上创建一个 onclick(),它设置了一个私有字段,然后我在点击事件中读取(是的,我想避免这种情况)
在jQuery中使用closest
和attr
方法的组合。
例如:
var userId = $(this).closest(.answercontainer).attr('id');
$(this)
是单击的元素的 jquery 对象
.closest(selector)
向上遍历 DOM 树,直到它到达选择器的匹配项
.attr('id')
为您提供遍历到元素的 id 属性中的值
如果 ID 在 DOM 中的其他位置,您可能需要查看其他一些遍历方法,例如 siblings
或 find
。