【问题标题】:Event binding and modifying innerHTML事件绑定和修改innerHTML
【发布时间】:2013-08-11 18:44:31
【问题描述】:

如果我将事件绑定到包含在一个表中的多个元素。如果我通过构建一个新字符串并分配它来重新生成这个表的innerHTML,事件是否仍然绑定?我必须重新绑定它们吗?

如果我手动修改innerHTMLjQuery.delegate 是否也有效?

【问题讨论】:

  • 您本可以在发布问题所需的时间内进行测试。只是说。

标签: javascript jquery html events innerhtml


【解决方案1】:

如果我重新生成此表的 innerHTML 购买构建一个新字符串并分配它,该事件是否仍然绑定?

没有。

我必须重新绑定它们吗?

是的。

如果我手动修改innerHTML,jQuery.delegate 是否也有效?

如果您正在修改调用.delegate() 的元素的innerHTML,则不会。如果您要修改其中一个孩子的innerHTML,是的。

【讨论】:

  • 谢谢!我在我的帖子中添加了另一个关于 jQuery.delegate() 的问题。
  • 感谢您的帮助。
【解决方案2】:

您将需要重新绑定它们,但如果您绑定始终位于 DOM 中的元素(如正文或文档),则 jquery delegate 或 new on 将起作用。

$('body').on('click', 'table td', function() {

});

【讨论】:

  • 顺便问一下,事件委托慢吗?因为我的动态元素包含包含动态元素的动态元素等。我可能必须为此创建诸如“body .Keyboard .Layout .Key”之类的东西,甚至更大的选择器。会慢下来吗?
  • @Virus721 我认为委托已被弃用,但事实并非如此,而且我认为它不会减慢任何速度,因为所有事件冒泡并且简单地在 DOM 中捕获更高的事件.
【解决方案3】:

你必须重新绑定。当您重新生成 innerhtml 时,它会破坏其中的 dom 元素以及它们拥有的任何绑定。

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
相关资源
最近更新 更多