0

我用 Jquery 创建了一个简单的函数,它可以工作,但是如果我将它导入很快它就不起作用,例如

<html land="en">
<head>
    <meta carset="utf-8">
    <title> Jquery 2 </title>
</head>

<body>
<!-- Inline is JS in the HTML file -->
<p id="paragraph"> This is a paragraph </p>
<script src="jquery-1.10.2.min.js"></script>
<script src="Tutorial2.js"></script>

</body>
</html>

这有效,但如果我这样做

<html land="en">
<head>
    <meta carset="utf-8">
    <script src="jquery-1.10.2.min.js"></script>
    <script src="Tutorial2.js"></script>
    <title> Jquery 2 </title>
</head>

<body>
<!-- Inline is JS in the HTML file -->
<p id="paragraph"> This is a paragraph </p>

</body>
</html>

这行不通。

是不是因为我在 Tutorial2.js 中的函数使用了对 p id="paragraph" 的引用,并且由于 Javascript 文件是在页面之前加载的,所以该函数不知道我告诉它访问什么。我的假设正确吗?

4

2 回答 2

1

是的,这就是原因:当您将事件处理程序绑定到元素时,该元素必须存在。

通常的解决方案是使用$.ready 函数,它仅在 DOM 准备好后执行您传递的回调:

$(function(){
   // your code using the DOM
});

然后你可能在 HEAD 中有你的代码。

另一种解决方案,但成本更高,是在绑定时使用委托:

$(document.body).on('event', 'yourselector'), function(){
      //
});
于 2013-09-08T16:00:57.973 回答
0
$(document).ready

这就是你需要的。

于 2013-09-08T16:01:45.513 回答