读取 jQuery 中的特殊字符

Read special character in jQuery

我正在使用很棒的字体图标并将它们用作:

#header > nav > a[href="#menu"]::before {
    content: '\f0c9';
}

我想编写一些代码,在单击后将此图标更改为另一个:

var style = $('<style />').appendTo('head');
$("#three_rows").click(function() {
    style.text("#header>nav>a[href='#menu']:before{content:'\f00d'}");
});

如果我在 content 属性 中使用一些简单的文本,此代码效果很好,但是当我尝试放置另一个 fa-icon 短代码时,它什么也没做。

据我了解,问题出在 "\" 个字符中。

如何在 jQuery 中使用它 "\"

您需要使用另一个 \:

来转义 \
var style = $('<style />').appendTo('head');
$("#three_rows").click(function() {
    style.text("#header>nav>a[href='#menu']:before{content:'\f00d'}");
});

您不能使用 jQuery 直接影响伪元素。您也不应该在 <style> 元素中使用纯文本将样式规则注入页面。这是一个非常非常 hacky 的解决方案,而且还有更好的解决方案。

例如,您可以简单地将 class 添加到所需的父元素,然后挂钩 CSS 规则以根据 class 更改图标,如下所示:

$("#three_rows").click(function() {
  $('#header > nav > a[href="#menu"]').addClass('active');
});
#header > nav > a[href="#menu"]::before {
  font-family: FontAwesome;
  content: "\f0c9";
}

#header > nav > a[href="#menu"].active::before {
  font-family: FontAwesome;
  content: "\f00d";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<div id="header">
  <nav>
    <a href="#menu">Menu</a>
  </nav>
</div>

<p>
  <button id="three_rows">Click me</button> 
</p>

为什么不是简单的方法?

单击元素时添加 class 和 javascript。 这就是你需要用 javascript.

做的全部
$("#three_rows").click(function() {
    $("#header>nav>a[href='#menu']").addClass('blubb');
});

并在您的 CSS 中添加。

#header > nav > a[href="#menu"].blubb::before {
    content: '\f00d';
}

因为 CSS 更改了样式,所以保留它。

当然,您可以将 class 名称更改为更有意义的名称。