1

我已经阅读了在就绪处理程序之外使用 jQuery 的代码,如果以这种方式使用它,有什么缺点?无论出于何种原因,我都对以这种方式编码感到不舒服。

来自 ASP.NET MVC 视图的内联脚本:

<script type="text/javascript">
    function foo() {
        if ($("#checkAll").attr("checked")) {
            $(".setColumns").attr("checked", true);
        }
        else {
            $(".setColumns").attr("checked", false);
        }

    }
</script>
4

3 回答 3

6

确实没有什么缺点。只是需要等待 DOM 元素加载完毕后才能对其进行操作。例如,如果你有这样的代码:

<script type="text/javascript">
  console.log($('#el').html());
</script>

<div id="el">Text</div>

该函数不会返回值,因为div尚未加载。

于 2013-10-22T16:22:24.837 回答
1

它不是。有些人在处理程序中运行它的唯一原因document.ready是,那时他们可以确定它DOM tree已完全加载,并且您的查询将返回正确的结果。

但是,如果您将脚本标签放在所有元素下方,通常不会有任何问题。

于 2013-10-22T16:22:15.750 回答
0

在 DOM 就绪处理程序中使用 jQuery 的原因是事件绑定仅在元素存在时才起作用——如果您的 DOM 未就绪,则您的元素可能不存在,因此事件可能不会被绑定。

这与人们在尝试将事件绑定到没有.on()选择器的动态加载内容时所面临的问题相同,例如,如果元素最初不存在,则不会将事件绑定到它。

p/s:您当然可以在处理程序之外自由定义函数。

于 2013-10-22T16:25:04.617 回答