我是否需要为Dom操作使用就绪事件?

时间:2012-11-13 14:44:10

标签: jquery html dom

我想知道 - 我是否需要在jQuery中使用像$(document).ready()这样的现成事件进行DOM操作。例如,我有一个javascript函数:

function handler(input,id) {        
    $(document).ready(function(){
        document.getElementById(input).value = id;
        document.search_form.submit();  
    });

}

4 个答案:

答案 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() {行意味着在DOMready时执行以下代码 - 如果它内部的函数与您的函数不同(但仍然有效)。您可以详细了解ready() here

第3行可以更改为$('#'+input).val(id);,这会使用jQuery ID selectorval()函数来更改值。

结束

function handler(input,id) {        
  $('#'+input).val(id);
  document.search_form.submit();  
}

您可以根据函数名称更改代码......

答案 3 :(得分:0)

不,不。这取决于你何时要操纵DOM。这意味着您应该考虑在<body>之前,之后或之内放置javascript的位置。