【问题标题】:.live('click',fn issue when used with traversal.live('click',fn 与遍历一起使用时的问题
【发布时间】:2013-02-13 16:58:34
【问题描述】:

好的,所以我有一个通常不加载 ajax 的元素,但是单击它会通过 ajax 重新加载(以及其他内容)。不,我不能让点击元素在点击时加载非 ajax。

除了我对 .live 点击事件执行以下操作外,一切正常:

$('.product-sort a.type-a').removeClass('active');
$(this).addClass('active');

现在第一次可以正常工作。但是然后第二次/第三次取决于我单击的元素,它不仅删除了 type-a 它还从 type-b 元素中删除了活动类...我做了console.log($('.product-sort a.type-a')) 并在 ajax 之后的一些元素加载两次。是否只是简单地 ajax 加载导航开始的解决方案,所以没有 predom/postdom 元素?还是有其他解决方法?

【问题讨论】:

  • 查看有关动态创建元素上的事件绑定的相关问题:stackoverflow.com/questions/203198/…
  • 只是一个旁注。 live 函数自 1.7 版以来已被弃用,并在 1.9 版中被删除。 api.jquery.com/live --- 让您知道在升级到最新的 jQuery 版本时会遇到麻烦。

标签: jquery


【解决方案1】:

您是否将正确的类应用于重新加载的 DOM 元素,因为如果您这样做了,选择器应该不会失败。您可以将 .type-a 类应用于应该是 .type-b 的锚点,或者您同时应用这两个类。

还有一个建议,live()jQuery 1.7 中已弃用并在 1.9 中删除,请改用 on()

【讨论】:

  • 我真的应该用这些更改刷新我的知识库...感谢您的提醒,我将看看移动到 1.9 并查看是否可以解决问题。是的,出于某种原因,它仍然针对其他元素.. 我使用不同的 data-type="type_1" 进行定位,这真的很奇怪..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
相关资源
最近更新 更多