HTML:
<div class="vote" id="<?php echo $id; ?>">
jQuery的:
$('.vote').on('click', function() {
var div = $(".vote").attr('id');
$.ajax({
type: "POST",
url: "vote.php",
data: {
id: $(".vote").attr('id')
},
success: function(data) {
alert(div);
}
});
});
这有用,但是 div
var它始终是第一个元素 - 并且运行两次(两个带有vote
类的div)。
我也使用AJAX来显示结果(带有vote
类的div)。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
您需要使用this
,它指的是调用该元素的元素。
var div = $(this).attr('id'); //this.id;
当您使用$(".vote").attr('id')
时,它将始终返回您第一个元素的ID。
当您使用id
存储自定义数据时。我建议您使用data-*
前缀自定义属性,可以使用.data()
<div class="vote" data-id="<?php echo $id; ?>">
然后你可以使用
var id = $(this).data('id');
答案 1 :(得分:0)
您需要使用当前元素点击上下文this
:
var div = this.id;
答案 2 :(得分:0)
使用this.id
代替$('.vote').attr('id')
,因为如果您使用$('.vote').attr('id')
答案 3 :(得分:0)
将$(&#39; .vote&#39;)替换为$(this),如下所示:
$('.vote').on('click', function() {
var div = $(this).attr('id');
$.ajax({
type: "POST",
url: "vote.php",
data: {
id: $(this).attr('id')
},
success: function(data) {
alert(div);
}
});
});