我想知道 - 我是否需要在jQuery中使用像$(document).ready()
这样的现成事件进行DOM操作。例如,我有一个javascript函数:
function handler(input,id) {
$(document).ready(function(){
document.getElementById(input).value = id;
document.search_form.submit();
});
}
答案 0 :(得分:6)
没有。上帝没有。不要那样做。 $(document).ready()
永远不应该在函数内部。
答案 1 :(得分:5)
不,没有必要。您可以将JavaScript放在文档的最末端</body>
标记之前。
你也可以使用window.onload
事件,虽然我不推荐它,因为在加载所有图像之后才会激活,这可能是在加载DOM之后的很长时间。
然而,这三种方法中的一种是最好的想法,因为在这些元素已完全加载到浏览器中之前,您无法使用JavaScript来操作DOM元素。
也就是说,将$(document).ready
置于另一个函数中可能没有充分的理由。几乎在所有情况下,您都希望$(document).ready
包围其他JavaScript代码。
答案 2 :(得分:1)
关于您的代码的几条评论:
1. function handler(input,id) {
2. $(document).ready(function(){
3. document.getElementById(input).value = id;
4. document.search_form.submit();
5. });
6.}
不需要第2行和第5行 - 因为这是一个函数并且将被调用而不是在加载时执行,您不需要就绪处理程序。 $(document).ready(function() {
行意味着在DOM
为ready
时执行以下代码 - 如果它内部的函数与您的函数不同(但仍然有效)。您可以详细了解ready()
here
第3行可以更改为$('#'+input).val(id);
,这会使用jQuery ID selector和val()
函数来更改值。
结束
function handler(input,id) {
$('#'+input).val(id);
document.search_form.submit();
}
您可以根据函数名称更改代码......
答案 3 :(得分:0)
不,不。这取决于你何时要操纵DOM。这意味着您应该考虑在<body>
之前,之后或之内放置javascript的位置。