修改尚未创建的元素的最佳方法

Rom*_*las 0 javascript

我的<input>网页中有一个字段,我想在其上添加一个特定的方法,比如说fooBar().

这是我做的:

<input id="xxx" .../>
<script type="text/javascript">
    $("xxx").fooBar = function() { ... };
</script>
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,由于某些原因,我不会在这里详述(实际上HTML是由JSF组件生成的),<script>将在标记之前声明<input>.

所以换句话说,我会在我的HTML中有这个:

<script type="text/javascript">
    $("xxx").fooBar = function() { ... };
</script>
<input id="xxx" .../>
Run Code Online (Sandbox Code Playgroud)

所以当然这段代码无法正常工作,因为脚本会尝试get($("xxx"))并修改一个尚不存在的元素.

如果我想坚持这两个标签的确切顺序,那么实现我想要的最佳方法是什么?

编辑

在我的情况下,$指的是原型,但我也在jQuery我的应用程序中使用.我必须与IE6兼容:o(

Ski*_*ick 5

您需要在加载文档后运行脚本.使用jQuery,您可以使用:

$(document).ready(function () {
    //do stuff here
});
Run Code Online (Sandbox Code Playgroud)

我不知道你在这里使用的是哪个库,但它们都准备好了jQuery的文档.

这是等效的原型:

document.observe("dom:loaded", function() {
  // do stuff
});
Run Code Online (Sandbox Code Playgroud)