jQuery选择器不能在脚本中工作,但在控制台中工作

问题描述:

这确实是一个非常奇怪的问题,我希望它很简单。我无法在我的html文档中获得简单的选择和附加操作,但是当我在Chrome浏览器控制台中时,它可以正常工作。jQuery选择器不能在脚本中工作,但在控制台中工作

<html> 
<head> 
<script src="https://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script> 
<script src="/js/script.js"></script> 
<script> 
$('[data-js="works"]').append("hello"); 
</script> 
</head> 
<body> 
<div data-js="works"></div> 
test 

</body> 
</html> 

当我把这一行脚本放在控制台中时,你好出现在测试上面。当我刚打开页面时,测试就在那里。我之前正在从此页面运行脚本,当我试图选择一个它不起作用的元素时。然后,我去内联脚本,看看它是否会在那里工作,不。我已经看过,如果它没有导入脚本的内联脚本工作,也不是。控制台没有错误信息。如果需要,我可以从该内联脚本打印到我的控制台,但是此代码仍然无法正常运行。

不能与我的本地httpserver一起使用,并且不能像本地打开的文件一样工作。

+0

你正在运行的JS之前存在于页面上的实际内容。将脚本放在结束标签之前或将其包装在文档准备好的调用中。 – j08691

之间的JS代码。这是因为剧本在加载页面之前执行,因此目标div还不存在。

解决方案是等待页面完全加载后再做点事情。 $函数可以用于此。给它一个回调,一旦页面被加载,它就会被执行。

您还可以使用window.addEventListener("load", callback);不需要jQuery

<html> 
 
    <head> 
 
    <script src="https://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script> 
 
    <script> 
 
     $(function(){ 
 
     $('[data-js=works]').append("hello"); 
 
     }); 
 
    </script> 
 
    </head> 
 
    <body> 
 
    <div data-js="works"></div> 
 
    test 
 

 
    </body> 
 
</html>

另一种解决方案可以在页面的末尾插入脚本。尽管在我看来,它并不那么整洁。

<html> 
 
    <head> 
 
    <script src="https://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script> 
 
    </head> 
 
    <body> 
 
    <div data-js="works"></div> 
 
    test 
 

 
    <script> 
 
     $('[data-js=works]').append("hello"); 
 
    </script> 
 
    </body> 
 
</html>

+0

祝福youuuuuuuuuu – Sally

尝试以下,希望它会解决你的问题

(function($) { // This will solve namespace problem (if any) 
    // Write your JQuery code here 
})(jQuery); 

要么你把js文件在身体的结束或将$(document).ready(function(){ //code inside })