繁体   English   中英

Ajax打破.on('click',eventhandler)

[英]Ajax breaking .on('click', eventhandler)

我有一个项目表,其中有一列链接可以单击以打开浮动菜单。 我还具有一个侧边栏链接,该链接将执行ajax请求并对结果进行排序(它将用新表填充该表)。 如果未对表结果进行排序(由ajax调用重新填充),则链接可以正常工作。 但是,当我对结果进行排序并且执行了ajax请求时,表中的链接不再起作用。

我想知道如何在表格链接中保留点击事件? 我以为jQuery的.on(selector,eventhandler)可以解决这个问题,但在我看来情况并非如此。

在此处输入图片说明

这是我目前对表格链接的点击事件的处理:

  $('.addSet').on('click', function(event) {
    event.stopPropagation();
    return menuShow(this);
  });

  $('.addSetMenu input, .addSetMenu select, .addSetMenu').on('click', function(event) {
    return event.stopPropagation();
  });

  menuShow = function(menuParent) {
    var menu, parentLeft, parentOffset, parentTop;
    menu = $(menuParent).siblings('.addSetMenu');
    parentOffset = $(menuParent).offset();
    parentTop = parentOffset.top;
    parentLeft = parentOffset.left;
    $(menu).css({
      'top': parentTop + 20,
      'left': parentLeft - 160
    });
    resetMenu();
    return $(menu).toggleClass('hide');
  };

  $('html, .setCancelBtn').on('click', function() {
    return resetMenu();
  });

  resetMenu = function() {
    var menu;
    menu = $('.addSetMenu input[type=text]');
    $('.addSetMenu select').val('default');
    $(menu).addClass('hide');
    $(menu).val('');
    return $('.addSetMenu').addClass('hide');
  };

重新填充表后,这些链接的相应DOM节点将被删除。 他们的所有事件处理程序也是如此。 您应该挂接到某个父元素,例如表。 从那里您可以捕获传播的事件。

$('table-selector').on('click', 'urlSelector', function(event) {
    //handler code
})

请参阅此处的“直接和委托事件”: http : //api.jquery.com/on/

更改

$('.addSet').on('click', function(event) {
  //some code
});

$(document).on("click",".addSet", function(event) {
  //some code
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM