[英]Using append() from Jquery outside the HTML document
我试图在单独的.JS文件中使用Jquery,因为将所有JavaScript代码保留在HTML文档之外会提高加载HTML文档的性能。
对于此示例,我使用“ index.html”和“ main.js”
以下是index.html:
<html lang="en">
<head>
<meta charset="utf-8">
<title>append demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="testJS/main.js"></script>
</head>
<body>
<p>I would like to say: </p>
<!-- CODE BELOW MUST BE REMOVED FROM THIS DOCUMENT -->
<script>
$( "p" ).append( "<strong>Hello</strong>" );
</script>
</body>
</html>
我想从html剪切代码并将其插入main.js,但是以下示例对我不起作用:
main.js:
p.append( "<strong>Hello</strong>" );
我也尝试过此方法,但没有成功:
$( "p" ).append( "<strong>Hello</strong>" );
我该如何解决这个问题,将JavaScript放入.js文件中又有什么区别?
您需要将代码添加到dom ready处理程序中,因为否则,在执行代码时,仍不会将p
元素添加到dom中-这是因为因为main.js
是在标记中的p
元素之前添加的,但是无论如何最安全的选择是使用dom ready处理程序进行dom操作
jQuery(function($){
$( "p" ).append( "<strong>Hello</strong>" );
})
我建议使用JQuery提供的$( document ).ready()
函数:
$(document).ready(function() {
$("p").append( "<strong>Hello</strong>" );
});
在这里您可以找到更多信息: http : //learn.jquery.com/using-jquery-core/document-ready/
使用外部js时,您必须将代码包装在这样的文档就绪函数中
$(function(){
$('p').append('<strong>Hello</strong>');
});
*注意- $(function(){
是$(document).ready(function(){
正如Arun P Johny解释的那样,问题在于js代码在其所依赖的DOM元素就绪之前就已在执行。
另一种解决方案是更改外部文件,以便它定义一个函数,然后在html文件的正文末尾调用该函数。
<html lang="en">
<head>
<meta charset="utf-8">
<title>append demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="testJS/main.js"></script>
</head>
<body>
<p>I would like to say: </p>
<script>
writeText();
</script>
</body>
</html>
<!-- main.js -->
function writeText(){
$( "p" ).append( "<strong>Hello</strong>" );
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.