我的页面上有三个图标。单击每个图标,调用ajax并获取contented并分别附加到另一个div。我现在面临的问题是,如果一个图标连续多次触发,它会点击ajax,因为它没有被点击的时间。
注意到这个问题,我检查一下,如果请求传递了名为sweep
的属性。如果是的话,我会清空div并附加内容;这是为了避免附加重复数据。但是现在当多次按下图标时,它会多次追加相同的数据。我无法找到导致这种情况发生的原因。出于某种原因,我必须使用append
而不是html
来放入内容。
我认为可以通过event.stopPropagation
和event.stopImmediatePropagation
来解决这个问题,但它们并没有用。请检查下面的代码并帮我修复它...谢谢..
问题的屏幕演员: demo
代码:
//links in the footer clicked
$('body').off('click.footer').on('click.footer', '[data-footer] ul li a', function(event){
event.stopImmediatePropagation();
event.preventDefault();
event.stopPropagation();
var layout = $(this).data('ck-tab');
$(this).trigger('ck.chat.layout', [{'layout':layout}]);
if(layout == 'list'){
ckit.render({"layout":'getConversations', "sweep": 1, "limit":localStorage.getItem("cListlimit"), "userId": localStorage.getItem("ckuser")});
}else if(layout == 'contact'){
ckit.render({"layout":'getContacts', "sweep": 1, "limit":localStorage.getItem("cntlimit"), "userId": localStorage.getItem("ckuser")});
}else if(layout == 'setting'){
//ckit.render({"layout":'getSettings', "sweep": 1});
ckit.setting();
}
});
我检查数据是否已经以这种方式附加到div。但即使这样也会多次显示数据..
if($.inArray(data[i].id, temp)<0) {
//add to array
temp.push(data[i].id);
}
显示内容的功能:
function display(value, arg){
var wrapper = $('[data-body-content]');
if(arg[0]['sweep'] == 1){
temp = [];
wrapper.empty();
}
setTimeout(function(){
for(var i=0; i < counter;i++){
if($.inArray(data[i].id, temp)<0) {
//add to array
temp.push(data[i].id);
}
}//end for
console.debug(temp);
wrapper.append(temp);
}, 300);
}