【问题标题】:cant hide data that was dynamically added无法隐藏动态添加的数据
【发布时间】:2014-01-26 01:48:03
【问题描述】:

这是隐藏数据的功能

$(".dispatch_pedido").live('click', function(){

    var res = this.id.split("_");

    var id = res[1];

    $("#"+id).hide();
});

此代码仅适用于最初添加的数据,但不适用于 ajax 添加的数据。

【问题讨论】:

  • 您应该使用更新版本的 jQuery。拥有一个如此旧版本的库以适应新版本的浏览器是没有意义的。
  • 是 4 年前编程的 WEB 应用程序,如果我更新 jquery,LIVE 功能将停止在网站的其他部分工作...@dystroy
  • live 已弃用,因为 1.7 版改用 on
  • 需要更多细节,你能在 jsfiddle.net 上安排一个测试用例吗?

标签: javascript hide jquery


【解决方案1】:

当您使用 ajax 向 DOM 添加新元素时,您需要使用 event delegation 以便事件可以绑定到该新添加的元素:

$(document).on('click', '.dispatch_pedido' , function(){

});

此外,live 从 jQuery 版本开始已弃用 1.7 ,您应该改用 on()


你可以在旧版本的jQuery中使用delegate()代替on()

$(document).delegate( ".dispatch_pedido", "click", function() {
    // Your code here  
});

【讨论】:

  • 无法更新 jquery 构建在这个 web 应用程序上的所有东西都是用 live 构建的(4 岁的应用程序),我知道一种使用所需选择器的方法,但我忘记了。
  • @bmacuer 你的id 的结果是什么?你能console.log(id)看看结果吗?
  • @Felix 我为表 tr.id 错误地附加了 id,这就是 hide() 不起作用的原因。感谢您的帮助。
【解决方案2】:

您的语法似乎不正确。查看下面的代码。

$(".dispatch_pedido").live('click', function(){

    var res = $(this).attr("id").split("_");

    var id = res[1];

    $("#"+id).hide();
});

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 2010-09-06
    • 2011-09-05
    相关资源
    最近更新 更多