javascript - jQuery 选择器在脚本中不起作用,但在控制台中起作用

标签 javascript jquery html

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

<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>

当我将那行脚本放入控制台时,hello 出现在 test 上方。当我刚打开页面时,测试就在那里。我早些时候从这个页面运行了一个脚本,当我试图选择一个元素时它不起作用。然后我去了内联脚本,看看它是否能在那里工作,不。我已经看到它是否可以在没有导入脚本的情况下从内联脚本运行,也没有。控制台没有错误信息。如果需要,我可以从该内联脚本打印到我的控制台,但这段代码仍然无法正常运行。

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

最佳答案

这是因为脚本是在页面加载之前执行的,所以目标div还不存在。

解决方法是等待页面完全加载后再做一些事情。 $ 函数可用于此目的。给它一个回调,它会在页面加载后执行。

您也可以使用不需要 jQuerywindow.addEventListener("load", callback);

<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>

关于javascript - jQuery 选择器在脚本中不起作用,但在控制台中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870725/

相关文章:

javascript - 如何使用 jquery 添加空数据列属性?

php - 从 PHP 编写 CKEditor 编辑的 HTML 文件

javascript - Google 文档的自定义键盘快捷键(更改颜色 - 背景颜色)

html - 无法让背景变化的图像居中

jquery - 淡入淡出图像?

javascript - D3 气泡图 'bubble.nodes not a function'

javascript - 在客户端调整/裁剪图像大小的最佳方法是什么?

javascript - 防止父div中子项的垂直溢出

javascript - 应该在这里使用 !important 吗?

jquery - 使用 LESS 变量的 IE8 REM 回退