单击div以在每次单击时从服务器加载附加结果加载内容

时间:2014-05-30 06:57:09

标签: javascript jquery ajax facebook

我有一个div" d1"点击时,它将来自服务器的朋友请求加载到隐藏的div d2"",但是当我多次点击它时,它会反复追加相同的结果,我试过这个来帮助解决问题

if($("#d1").data('clicked')) {              
// do nothing           
    }
else{
$("#d1").click(function(){
                $("#d1").data('clicked', true);
                // then call_server to get result  and append to div2
}

但它失败了它总是附加相同的结果,我最终得到重复的重复列表

3 个答案:

答案 0 :(得分:2)

你有几个选择,但一般的问题是,一旦有人点击div,事件仍然存在并存在。

你可以这样做:

$("#d1").on('click', function(){
                // then call_server to get result  and append to div2
                $(this).off('click');

});

点击后删除该事件。 OR

你可以这样做..

$("#d1").one('click', function(){
                $("#d1").data('clicked', true);
                // then call_server to get result  and append to div2

});

.one()方法将确保只调用一次函数,然后自动删除该事件。

然后,一旦用户收到新朋友请求的通知,您就可以使用另一个.one()方法重新激活div。

答案 1 :(得分:0)

如果我理解正确,您希望只调用一次Click事件。

$("#d1").click(function(){
    $("#d1").data('clicked', true);
     // then call_server to get result  and append to div2
     this.onclick = null; 
}

答案 2 :(得分:0)

这应该这样做:

$("#d1").click(function(){
    if($("#d1").data('clicked')) {              
       // do nothing  
       return;         
    } else {
       $("#d1").data('clicked', true);
       // then call_server to get result  and append to div2
    }
});

我仍然希望看到你如何打电话给你的ajax我认为你应该在你的问题帖子上发布你的ajax方法。您可以检查是否要拨打下一个10,20 ... (您的号码选择)记录。