元素上的多次触发多次触发jquery

时间:2016-09-05 04:36:35

标签: javascript jquery ajax

我的页面上有三个图标。单击每个图标,调用ajax并获取contented并分别附加到另一个div。我现在面临的问题是,如果一个图标连续多次触发,它会点击ajax,因为它没有被点击的时间。

注意到这个问题,我检查一下,如果请求传递了名为sweep的属性。如果是的话,我会清空div并附加内容;这是为了避免附加重复数据。但是现在当多次按下图标时,它会多次追加相同的数据。我无法找到导致这种情况发生的原因。出于某种原因,我必须使用append而不是html来放入内容。 我认为可以通过event.stopPropagationevent.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);

}

0 个答案:

没有答案