$().bind 在未准备好文档的情况下无法正常工作
$().bind not working without document ready
使用$().bind
时有必要使用$(document).ready()
吗?
网页部分:
<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');
});
这是我用来测试的两段代码。如果我用 $(document).ready
包装 js 部分,它工作正常。
我担心的原因是我会在不同的元素上做很多键盘+鼠标绑定,如果我必须一直写一个$().ready,那将是乏味的(虽然我不介意这样做,但我只是好奇)。
$(document).ready 是必要的吗?
我浏览了上面的帖子,它说,如果在 body tag 之前添加 ext js 文件$().ready
则没有必要,但我仍然离不开它。请帮忙。
您的问题与绑定无关 - 在文档完全加载之前,jQuery 选择不起作用。原因很简单:直接在脚本标记中执行的代码在加载时执行。由于<script>
在头部,因此它先于身体的任何内容。因此,当您的代码被执行时,还没有#sendie
- 因此您无法设置其单击处理程序。
这个表达式...
$("#sendie")
。尝试在现有 DOM 中查找 ID 等于 'sendie'
的元素。如果它不存在(还不存在),则生成的jQuery对象将为空 - 并且相应的元素是否出现在那里,根本不重要,因为jQuery不会预测未来。
所以你拥有的替代方案是...
。将你调用的所有函数收集到一个更大的函数(或带有init
方法的对象)中,然后在dom.ready
上调用这个大函数(object.init())。这不是必需的(这就是jQuery在幕后所做的),但它可能会帮助你更好地组织代码。
。使用委派:将所有事件处理程序绑定到document
,然后在该"元处理程序"中路由操作。同样,只有当这个元处理程序是一个非常薄的"路由器"层,并且实际操作是在相应的模块/方法中完成时,这才有用。
页面末尾包含你的js脚本,你不需要它(所以DOM元素已经加载了):
<script type="text/javascript" src="test.js"></script>
</body>
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- AngularJS绑定没有'在没有填充父范围的情况下无法工作
- 如何使多个工作在这种情况下
- AJAX函数在没有警报的情况下无法工作
- 表单验证工作不正常,在不检查条目的情况下继续
- GET在POST不工作XMLHttpRequest的情况下正常工作
- JavaScript while循环没有'不能在有条件的情况下工作
- 如何停止两个按钮执行相同的工作?在这种情况下,它们都会滚动到顶部
- 在什么情况下,应该.deep.equal失败,但使用JSON.stringify进行比较工作正常
- 如何使html链接标签可以在没有标签的情况下工作
- Javascript变量在没有var的情况下工作
- Jquery脚本在没有警报的情况下无法工作
- 无论如何都要获取文档.在不删除整个页面的情况下写入即可工作
- Jquery在不触发事件的情况下部分工作
- 在没有调用函数的情况下,返回如何在Javascript中工作
- 位置管理器在没有互联网的情况下无法工作
- 有没有一种方法可以让jQuery日期选择器在没有年份的情况下工作
- 窗口clearInterval()在没有参数的情况下工作
- 如何使HTML5在没有JS或Jquery的情况下工作