newElements函数问题

时间:2014-05-26 09:06:43

标签: javascript jquery

我的一个项目中有投票功能。请参阅以下代码。

 $(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或任何其他页面加载后,投票功能触发两次。我该如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 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版本。