0

我想知道 - 我是否需要使用$(document).ready()jQuery 等准备好的事件来进行 DOM 操作。例如,我有一个 javascript 函数:

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

}
4

4 回答 4

6

不,上帝不。不要那样做。$(document).ready()永远不应该在函数内部。

于 2012-11-13T14:46:31.893 回答
5

不,这是没有必要的。相反,您可以将 JavaScript 放在文档的最末尾,然后再进行</body>标记。

您也可以使用该window.onload事件,尽管我不推荐它,因为在加载所有图像之前它不会触发,这可能是加载 DOM 之后的很长时间。

不过,这三种方法中的一种是最好的主意,因为在这些元素完全加载到浏览器中之前,您不能使用 JavaScript 来操作 DOM 元素。

也就是说,可能没有充分的理由将其放入$(document).ready另一个函数中。在几乎所有情况下,您都希望$(document).ready将其他 JavaScript 代码包围起来。

于 2012-11-13T14:45:43.173 回答
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() {时执行以下代码- 如果它在像你这样的函数内部是不需要的(但仍然可以工作)。你可以在这里阅读更多DOMreadyready()

第 3 行可以更改$('#'+input).val(id);为此使用 jQuery ID 选择器val()更改值的函数。

结束于

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

根据函数名称,您可能会更改代码多一点......

于 2012-11-13T14:50:43.777 回答
0

不,你没有。这取决于您何时要操作 DOM。这意味着你应该考虑你的 javascript 应该放在哪里,在<body>.

于 2012-11-13T14:52:23.563 回答