我的一个项目中有投票功能。请参阅以下代码。
$(function () {
$(".vote").click(function () {
var id = $(this).data("id");
var name = $(this).data("name");
var dataString = 'id=' + id;
//var dataId = id;
var parent = $(this);
if (name == 'up') {
$(this).fadeIn(200).html;
$.ajax({
type: "POST",
url: "vote_up.php",
data: dataString,
cache: false,
success: function (html) {
parent.parent().find(".display-vote").html(html);
}
});
} else {
$(this).fadeIn(200).html;
$.ajax({
type: "POST",
url: "vote_down.php",
data: dataString,
cache: false,
success: function (html) {
parent.parent().find(".display-vote").html(html);
}
});
}
return false;
});
});
我正在使用jQuery infinite scroll
加载其余的网页/帖子。我在主页和第二页中使用以下代码来加载其余数据
('#left').infinitescroll({
navSelector: '#page-nav', // selector for the paged navigation
nextSelector: '#page-nav a', // selector for the NEXT link (to page 2)
itemSelector: '.post-box', //
}, function (newElements, data, url) {
$(".vote").click(function () {
var id = $(this).data("id");
var name = $(this).data("name");
var dataString = 'id=' + id;
//var dataId = id;
var parent = $(this);
if (name == 'up') {
$(this).fadeIn(200).html;
$.ajax({
type: "POST",
url: "vote_up.php",
data: dataString,
cache: false,
success: function (html) {
parent.parent().find(".display-vote").html(html);
}
});
} else {
$(this).fadeIn(200).html;
$.ajax({
type: "POST",
url: "vote_down.php",
data: dataString,
cache: false,
success: function (html) {
parent.parent().find(".display-vote").html(html);
}
});
}
return false;
});
});
问题是在第二次3或任何其他页面加载后,投票功能触发两次。我该如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:3)
也许如果您取消绑定click事件然后将其绑定
function(newElements, data, url){
$(".vote").unbind( "click" );
$(".vote").click(function() {
答案 1 :(得分:2)
您需要在再次绑定之前取消绑定click事件。
[...]
$(".vote").unbind('click').click(function()
[...]
或
[...]
$(".vote").off('click').click(function()
[..]
取决于您使用的jQuery版本。