小编Nim*_*les的帖子

在 gatsby 中包含 .js 文件的正确方法,该文件在所有页面上执行其代码

前提是
我有一个静态站点,我正在将其转换为gatsby 站点。我已经使用 jQuery 来执行某些 DOM 操作和其他触发器,例如切换移动菜单和处理 cookie。我想包含这个文件,main.js这样它里面的 JavaScript 就会在所有页面上执行。

我已经使用 npm 安装了 jQuery 并将其包含在layout.jsusing import $ from "jquery"

我无法以可靠的方式实现上述目标。以下是我尝试过但没有成功的方法。

方法 1
将整个代码放在onInitialClientRenderingatsby-browser.js

方法2
复制html.jssrc文件夹中,通过script标签添加文件。

方法3
其次这个答案并放置整个代码中

<script dangerouslySetInnerHTML= {{ __html: `putYourSciptHereInBackticks `}} />
Run Code Online (Sandbox Code Playgroud)

方法4
跟着这个答案,并试图使用包含的文件react-helmet。代码确实使用此方法执行,但仅在加载站点时执行。如果我遍历到其他页面,则不会,即使我回到同一页面也是如此。

更新

现在,我已经得到它通过保持方法4和复制整个工作的代码main.jsgatsby-browser.js下面onRouteUpdate就像这样:

const $ = require("jquery");

exports.onRouteUpdate = () => {
  $(document).ready(function(){
    // Code
  });
}
Run Code Online (Sandbox Code Playgroud)

但是,我知道这是多余的,绝对不是正确的做事方式。

javascript reactjs gatsby

7
推荐指数
1
解决办法
1062
查看次数

如何在jQuery中将类应用于兄弟姐妹?

好的,我有这个代码:

<li>
  <a href="#step-2" class="step-3-link selected">
    <span class="stepNumber">2</span>
  </a>
  <br />
  <br />
  <span class="sn2">Home Page Banner</span>
</li>
Run Code Online (Sandbox Code Playgroud)

我需要做的是,如果'li a'选择了类,在这种情况下是step-3-link,那么类'sn2'的范围应该添加一个类'selected-span'.

我之前尝试过的代码如下:

$('.swMain ul.anchor li a.selected').siblings('span').addClass('selected-span');
Run Code Online (Sandbox Code Playgroud)

我尝试过.siblings,.find,.parent等等但没有成功.请指导我一样.

javascript jquery

-2
推荐指数
1
解决办法
87
查看次数

标签 统计

javascript ×2

gatsby ×1

jquery ×1

reactjs ×1