【问题标题】:jquery - lose click() event after ajax call?jquery - ajax调用后丢失click()事件?
【发布时间】:2010-06-07 03:07:33
【问题描述】:

在以下网页 liamharding.com/pgi.php 我在页面左侧有一个选项面板,单击面板“箭头”时会打开和关闭,在您选择市场之前它工作正常(用于测试使用“ Random Walk' 市场并点击 'Show/Refesh Graphs'),然后使用 get_graph(forexName, myCount, divIsNew) 函数进行 ajax 调用。

此调用完成后会显示一个图表,然后我的选项面板 click() 事件不起作用?

ajax 调用返回变量ajax_data 中的数据,当我执行以下代码var jq_ajax_data = $("<div/>").html(ajax_data); 时会出现问题。我需要将它包装在一个中,这样我就可以使用 jQuery 从中提取数据。如果这行代码被注释掉了 click() 事件可以正常工作??

希望有人能帮忙,我花了很多时间但找不到问题所在。

【问题讨论】:

  • 也许我看错了,但在 Chrome Win 7 上似乎一切都对我有用
  • 是的,你是对的,它也适用于 chrome (Win7 x64)。我使用的 Firefox (v3.5.9) 有这个问题,同样的问题也出现在 IE8 中(尚未格式化为 ie8)...

标签: jquery ajax jquery-ui


【解决方案1】:

您不应该像上面推荐的那样使用 .live,它现在已被弃用。您应该改用 .on 例如

$(document).on('click', '.selector', function(){
    //Your code here
});

【讨论】:

  • 安德烈,当 3 年前的答案实际上是有效的时,拒绝投票和发布这样的答案是不准确的。请相应地调整您的答案和投票。
  • @griegs 没有看到我会改变我对你的回答的投票,但是我的回答很好并且不是不准确的,也许评论你的回答没有意义,但事实是人们总是搜索和尝试使用堆栈中的答案。如果我没有发布此答案,偶然发现此问题的人可能会使用 live 而不是 on。
【解决方案2】:

如果不查看完整代码,很难准确判断导致点击事件丢失的原因,但您可以尝试将点击设置为实时事件,如下所示:

$("#clickableItem").live("click", function() { 
    //do stuff
});

【讨论】:

  • 要查看完整代码,请转到上面的链接“liamharding.com/pgi.php”并查看源代码,它就在那里。我尝试为点击事件添加上述 .live 但在 Firefox 和 IE8 中仍然没有运气。 Chrome 很好用???
【解决方案3】:

您正在用新的 html 替换 div 的内容。新的 html 不会分配任何点击事件。

使用.live 命令始终让您的元素具有分配给它们的点击事件。

【讨论】:

  • 安德烈,看看发帖的日期。它在 3 年前没有被弃用!
  • 这个旧答案仍然帮助我发现了一些应该很明显的东西。谢谢!
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
相关资源
最近更新 更多