1

我使用 jQuery on()函数将函数附加onclick到我网站中的一组锚点,如下所示:

<ul>
  <li>First <a href='#' title='delete' class="itemDelete">x</a></li>
  <li>Second <a href='http://www.repubblica.it' title='delete' class="itemDelete">x</a></li>
  <li>Third <a href='#' title='delete' class="itemDelete">x</a></li>
</ul>​

<script type="text/javascript">
$(document).on('click', '.itemDelete', function(e) {
    $(this).closest('li').remove();
    e.preventDefault();
});
</script>

我应该在以下块中插入 javascript 代码吗?

$(document).ready(function() {
  ...
});

如果是,为什么?

4

2 回答 2

3

这段代码在任何情况下都不需要完全解析文档内容,因为您使用document的是始终存在的。作为第二个参数传递的选择器不会以任何方式用于检索元素,因此 dom 不需要为此做好准备。

$(document).ready如果不是上述情况,您将无法首先致电。

重要的是要了解在幕后您将直接、正常的事件侦听器附加到document. 选择器实际上所做的就是如果在事件传播路径中没有元素匹配您的选择器,则不会调用您的处理程序回调。显然,如果传播被较低级别的侦听器过早地停止,那么在这种情况下也不会被触发。

于 2012-08-03T15:01:00.807 回答
2

在这种情况下,您不需要这样做。由于<script>标签位于元素的 HTML 之后,因此您的代码将在元素加载执行,无需使用 DOM 就绪事件处理程序来确保它们已被加载。

也就是说,我通常更喜欢将我的所有与页面上的元素一起工作的 JavaScript 代码包含在一个 DOM 就绪事件处理程序中,即使它不是绝对必要的;这样,如果我决定将其移至其他位置 - 例如页面顶部或外部文件 - 或以其他方式更改它不会中断。

于 2012-08-03T14:59:36.897 回答