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

时间:2012-06-26 20:39:47

标签: javascript jquery ajax

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

我想知道如何保存表格链接中的点击事件?我认为jQuery的.on(选择器,eventhandler)负责这一点,但在我的情况下似乎并非如此。

enter image description here

这是我目前用于表链接的点击事件:

  $('.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');
  };

2 个答案:

答案 0 :(得分:2)

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

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

请参阅此处的“直接和委派活动”:http://api.jquery.com/on/

答案 1 :(得分:1)

更改

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

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