【发布时间】:2023-03-29 11:22:01
【问题描述】:
当页面呈现时,我需要通过 jQuery 设置一些 HTML。例如,我可能有这个:
<ol>
<li>
<div class="theDiv"></div>
<a class="theLink"...>...</a>
<li>
<ol>
有时我需要隐藏 div。有时我需要将点击事件应用于锚标记。所以我可能有这个:
$('li').hide();
$('a').click(function(){...});
效果很好。
但是,我们现在正在将其他 LI 加载到此列表中。不幸的是,我们没有用 jQuery 来做这件事。我可以将上述内容包装在一个函数中,该函数可以在 ajax 加载后调用以重新渲染所有内容。但是有没有更好的方法?
我认为live() 会是解决方案,但我发现delegate() 现在通过文档成为首选。
无论哪种方式,两者似乎都只允许您绑定事件(单击、悬停等),而不是在将新 HTML 添加到 DOM 后简单地重新渲染。
有没有办法通过delegate() 做到这一点?有没有更合适的处理方式?
更新:
也许有一个更简单的方法来问这个问题:要让 JS 在 AJAX 更新后对 DOM 进行操作,是否必须通过 AJAX 调用本身(通常通过回调函数)触发它,或者是否有 jQuery 方法来'观察' DOM 更新并相应地触发?
【问题讨论】: