当前位置: 首页 > 知识库问答 >
问题:

jQuery改变类,但css不变

萧繁
2023-03-14

我刚开始学习如何用jQuery改变类。在我的示例中,六边形改变了DOM中的类,但没有应用CSS。我是不是漏掉了什么明显的东西?

谢谢你抽出时间!

null

$('#hexagon1').click(function() {
  $(this).removeClass("unclicked");
  $(this).addClass("clicked");
});

$('#hexagon2').click(function() {
  $(this).removeClass("unclicked");
  $(this).addClass("clicked");
});
.clicked {
  fill: #0000FF;
}

.unclicked {
  fill: #0000FF;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<svg viewBox="0 0 101.83981 74.999893" id="svg8">
  <g
     id="layer1"
     transform="translate(-28.970265,-13.579265)">
    <path
       style="opacity:1;fill:#ffb619;stroke-width:4.50001;stroke-linecap:round;stroke-miterlimit:7"
       id="hexagon1"
       d="M 43.906288,64.275181 28.970265,39.449215 43.002172,14.101257 71.9701,13.579265 86.906123,38.405231 72.874217,63.753189 Z" class="unclicked"/>
    <path
       style="opacity:1;fill:#008000;stroke-width:4.50001;stroke-linecap:round;stroke-miterlimit:7"
       id="hexagon2"
       d="M 87.810242,88.579156 72.874219,63.753189 86.906125,38.405231 115.87405,37.883239 130.81008,62.709205 116.77817,88.057164 Z" class="unclicked"/>
  </g>
</svg>

null

共有3个答案

柳宾实
2023-03-14

两件事。

>

具有相同的CSS

.clicked {
  fill: #0000FF;
}

.unclicked {
 fill: #0000FF;
}

要使其正常工作,要么在JQuery中使用 ,要么最初避免内联样式并在CSS文件中应用样式。另外,在这两种情况下,您肯定需要使用不同的 颜色。

梁丘璞瑜
2023-03-14

尝试将 添加到样式规则中。

这是因为您还在路径的style属性中设置了fill,这将覆盖类中的fill规则

贺劲
2023-03-14

问题在于您使用了内联的 属性,这些属性覆盖了任何外部样式规则。

要解决这个问题,您需要组织您的CSS,使 的规则足够具体,以覆盖任何默认样式。您还需要使这两个类的 颜色不同,因为在您的示例中,它们是相同的,不会有任何区别。请尝试以下操作:

null

$('.hexagon').click(function() {
  $(this).toggleClass("unclicked clicked"); // note the single use of toggleClass here
});
.hexagon {
  opacity: 1;
  stroke-width: 4.50001;
  stroke-linecap: round;
  stroke-miterlimit: 7;
}

.hexagon1 { fill: #ffb619; }
.hexagon2 { fill: #008000; }
svg path.clicked { fill: #0000FF; }
svg path.unclicked { fill: #CC0000; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<svg viewBox="0 0 101.83981 74.999893" id="svg8">
  <g id="layer1" transform="translate(-28.970265,-13.579265)">
    <path class="hexagon hexagon1 unclicked" d="M 43.906288,64.275181 28.970265,39.449215 43.002172,14.101257 71.9701,13.579265 86.906123,38.405231 72.874217,63.753189 Z" />
    <path class="hexagon hexagon2 unclicked" d="M 87.810242,88.579156 72.874219,63.753189 86.906125,38.405231 115.87405,37.883239 130.81008,62.709205 116.77817,88.057164 Z" />
  </g>
</svg>
 类似资料:
  • 本文向大家介绍jQuery CSS()方法改变现有的CSS样式,包括了jQuery CSS()方法改变现有的CSS样式的使用技巧和注意事项,需要的朋友参考一下 jQuery入门实例:使用CSS()方法改变现有的CSS样式表,css()方法在使用上具有多样性。其中有一种可接受两个输入参数:样式属性和样式值,两者之间用逗号分隔。比如要改变链接颜色,可以这样编写代码: 如果需要改变多个样式属性,可先定义

  • 问题内容: 要在元素上具有渐变背景,我需要执行以下操作: 现在,jQuery是否不打算消除与跨浏览器兼容性问题有关的所有工作?有没有更好的方法可以做到这一点。不使用任何其他插件? 问题答案: 有一个用于处理渐变的jQuery插件。我没用过,但是看起来很简单 http://plugins.jquery.com/project/gradient 继承人如何使用它: http://www.julien-

  • 我有一个智能组件,它调用一个从api检索所有信息的服务,并加载一组显示所有信息的哑组件。 当初始化时,智能组件从url中获取id,并将其发送给服务,以从api中获取所有数据,并且一切都按照预期工作,但是当我单击页面上的链接之一,该链接应该加载相同的页面但不同的id,url改变了,但不改变视图,并且我在控制台上也没有看到任何activity。 这是智能组件: 这是显示链接的哑组件: 这是从“第一个”

  • 问题内容: 有没有一种方法可以使用jQuery更改CSS类的属性,而不是元素属性? 这是一个实际的例子: 我上课有一个div 我想更改类背景属性,而不是已分配类背景的元素。 如果我使用jQuery .css()方法做到这一点: 它会影响现在具有class的元素。到这里为止一切都很好。但是,如果我进行Ajax调用,并在class中插入更多div ,则这些背景将不会具有绿色背景,而它们将具有初始背景。

  • 问题内容: 我读过在Java中不能更改String类型的对象。但是int和char变量可以。为什么?你可以给我一个例子吗? 谢谢。(我是较新的-_-) 问题答案: 正如bzabhi所说,字符串在Java中是不可变的。这意味着字符串对象将永远不会改变。这并不意味着您不能更改字符串变量,只是不能更改字符串的基础内存表示形式。例如: 执行完这些行后,str将指向内存中的新字符串。原始的“ Hello”字

  • 主要内容:jQuery CSS 类,全局类,按钮类,图标类,主题类 Classes,网格类jQuery CSS 类 jQuery Mobile CSS 类来设置不同元素的样式。 以下列表包含了通用的 CSS 样式: 全局类 以下类可以在 jQuery Mobile 小工具中使用 (按钮,工具条,面板,表格,列表等。): Class 描述 ui-corner-all 为元素添加圆角 ui-shadow 为元素添加阴影 ui-overlay-shadow 为元素添加多层阴影 ui-mini

  • jQuery CSS 类 jQuery Mobile CSS 类来设置不同元素的样式。 以下列表包含了通用的 CSS 样式: 全局类 以下类可以在 jQuery Mobile 小工具中使用 (按钮,工具条,面板,表格,列表等。): Class 描述 ui-corner-all 为元素添加圆角 ui-shadow 为元素添加阴影 ui-overlay-shadow 为元素添加多层阴影 ui-mini

  • 问题内容: 谁能帮助我,我有两个问题。 我想做的是使用jQuery动态更改CSS类规则。 在上面的示例中,我有一个现在使用jQuery 命名的类,我想仅通过不添加css内联来更改字体大小,而不更改颜色。 我要创建更改并将其保存到文件,请记住,将存在完整的样式表或没有类名将保存在文件中。 我该怎么做才是最简单,更好的方法? 谢谢! 问题答案: 据我所知,没有jQuery的方法可以做到这一点。可能有一