0

$(document).ready()用的时候有必要用$().bind吗??

HTML部分:

<head>
    <script type="text/javascript" src="jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="test.js"></script>
    <link rel="stylesheet" href="test.css" type="text/css">
</head>
<body>
<div style=''>
    <input type="text" id="sendie" value="Type your reply here and press Enter" class="inputBox"/>
</div>
</body>

JS部分

$("#sendie").bind("click",function(){
    console.log('log');
});

这是我用来测试的两段代码。如果我用 包裹 js 部分$(document).ready,它可以正常工作。

我担心的原因是我会在不同的元素上做很多键盘+鼠标绑定,如果我必须一直写一个 $().ready,那会很乏味(虽然我不介意这样做那但我只是好奇)。

$(document).ready 有必要吗?

我浏览了上面的帖子,它说,$().ready如果在body标签之前添加了ext js文件,则没有必要,但我仍然不能没有它。请帮忙。

4

3 回答 3

4

这个表情...

$("#sendie")

... 尝试'sendie'现有DOM 中查找 ID 等于的元素。如果它不存在(还),则生成的 jQuery 对象将为空 - 并且相应的元素是否会出现在那里,根本不重要,因为 jQuery 不会预测未来。

所以你有的选择是......

...将您调用的所有函数收集到一个更大的函数(或带有init方法的对象)中,然后在dom.ready. 这不是必需的(这就是 jQuery 在幕后所做的),但它可能会帮助您更好地组织代码。

...使用委托:将所有事件处理程序绑定到document,然后在该“元处理程序”中路由操作。同样,这仅在此元处理程序是一个非常薄的“路由器”层时才有用,并且实际操作在相应的模块/方法中完成。

于 2013-11-06T18:46:54.943 回答
4

您的问题与绑定没有任何关系 - 这是在文档完全加载之前不起作用的 jQuery 选择。这样做的原因很简单:直接在脚本标签内执行的代码在加载的那一刻就被执行。由于<script>在头部,它在身体的任何内容之前。因此,当你的代码被执行时,还没有#sendie- 所以你不能设置它的点击处理程序。

于 2013-11-06T18:47:12.647 回答
1

如果在页面末尾包含 js 脚本,则不需要它(因此 DOM 元素已经加载):

<script type="text/javascript" src="test.js"></script>
</body>
于 2013-11-06T18:48:03.367 回答