【问题标题】:jQuery - .trigger() doesn't work after .load()jQuery - .trigger() 在 .load() 之后不起作用
【发布时间】:2011-07-11 11:51:07
【问题描述】:

这是我的代码:

function refresh () {   
    sub_tab=$("#hid").val();
    $("#content").load(cur_tab+'.php',function () {
        alert(sub_tab);
        $("#pd").trigger('click');
    });     
}

$("#pd").trigger('click'); 行似乎不起作用。但是,如果我将此行作为独立操作执行(没有load),它可以工作。
#pd 是一个<div>,它正在加载到包含上述脚本的页面中。
有什么想法吗?

#pd 是 inside 加载到 #content 中的另一个 PHP 页面 .现在,当我单击#pd 时,它工作正常,只是,当我将 PHP 文件重新加载到#content 中时,触发事件似乎不起作用

【问题讨论】:

  • @ianbarker:这是一个不同的load 方法:api.jquery.com/load。它将调用cur_tab+'.php' 的响应加载到#content
  • @ianbarker:在 jQuery 中有两个不同的 .load() 方法。
  • @Anant:alert 会弹出吗?
  • @jAndy :是的。我把它放在那里,只是为了检查请求是否正确通过
  • @Anant:那么另一个问题很重要->#content 是否包含#pd。在这种情况下,它会覆盖所有绑定的事件处理程序。

标签: jquery ajax triggers load


【解决方案1】:

如果click 事件绑定到#pd,并且#pd#content 内部,则每次重新加载内容时都会丢失绑定,因为#pd 正在被销毁并重新创建。

尝试使用delegate 绑定事件 - 它与 Ajax 调用和动态 DOM 配合得更好:

$("#content").delegate("#pd", "click", function(){
    // click event
});

稍后,当您调用$("#pd").trigger('click'); 时,您应该会看到预期的结果。

【讨论】:

  • 嗯,谢谢。,虽然我仍然有问题,这似乎使我的代码遵循这个函数,被动
  • @Anant - 不必抱歉,但如果你想得到一个好的答案,你需要编辑问题 - 准确解释你在做什么,以及它如何“不起作用” ”。答案基于许多假设 - 这是有根据的猜测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多