addClass函数没有添加类
jQuery .addClass function not adding class
我正试图添加一个类来突出显示网页上的某些元素。我使用的是jQuery("selector").addClass("class")
函数。然而,它不起作用。
function toggleHighlight(selector, on) {
if (on) {
$(selector).addClass("highlighted");
} else {
$(selector).removeClass("highlighted");
}
}
当on
参数是true
,而selector
参数是有效的选择器时,它将进入if
子句并退出。不幸的是,选择器引用的元素的类保持不变。我似乎错过了一些相当基本的东西。我们将不胜感激。
编辑:
为了清楚起见,我省略了前面的console.log($(selector));
和console.log($(".highlighted"));
语句。第一个返回right元素,第二个返回none(在.addClass()
之后调用)。元素本身是由地图传单创建的<path>
元素(来自GeoJSON)。因此,HTML很难复制。
我直接从JS控制台调用了页面上的按钮形式的函数:<input type="button" id="toggle-0702" class="btn btn-default" onClick="toggleHighlight('.node-0112', true)" value="turn on" '>
。同样的结果。
编辑2:
显然,这是<path>
元素或(更可能)传单的问题。为了证明这一点:http://jsfiddle.net/mrz40jgw/.请注意第二个圆上的shy
类。
我们没有足够的信息来确切说明发生了什么,但除非您干扰了jQuery,否则我们可以排除addClass
损坏的可能性。因此,以下情况之一可能是正确的:
- 当您认为
toggleHighlight
没有被调用时,请使用console.log
来调试它 $(selector)
没有产生您认为的结果。请使用console.log
对此进行调试
或者可能最有可能:
- 添加类
highlight
不会以您认为应该的方式影响目标元素,这可能是由于选择器具有更高的特异性。通过手动设置类来调试它,并验证它如何影响元素的视觉属性
请注意,jQuery已经为类提供了切换,因此您的代码可以简化为:
function toggleHighlight(selector, on) {
$(selector).toggleClass("highlighted", on);
}
问题似乎在于jQuery无法更改SVG元素上的类:jQuery SVG,为什么可以';我不添加Class吗?
为了记录在案,以下是我根据新信息提出的解决方案:
function toggleHighlight(selector, on) {
var oldClasses = [];
var newClasses = "";
var elements = $(selector)
for (var i = 0; i < elements.length; i++) {
oldClasses = $(elements[i]).attr("class").split(" ");
newClasses = "";
for (var j in oldClasses) {
if (oldClasses[j] != "highlighted") {
newClasses += " " + oldClasses[j];
}}
if (on) {
newClasses += " highlighted";
}
$(elements[i]).attr("class", newClasses.trim());
}}
- 如何添加函数中存在的所有参数
- 为新对象添加函数,将对象添加到数组中.理解困难'这'关键字
- 使用元素选择器向Object添加函数
- Javascript 向影子根中的自定义元素添加函数
- 如何在jQuery中添加函数作为自定义事件
- 仅向某个对象添加函数
- jQuery插件返回this.each并为每个对象添加函数属性
- 我可以用Javascript向数组添加函数吗
- HTMLJavascript-如何向输入语句添加函数并隐藏输入语句,除非选中“是”,然后取消隐藏
- jquery在html属性中添加函数回调,以便在其他事件中调用
- 如何向对象添加函数并引用其成员
- 动态添加函数参数
- PHP 添加函数
- 向原型添加函数
- Java 在不使用引号的情况下向 json 对象添加函数
- jQuery向动画队列添加函数
- 向对象原型添加函数的正确方法
- 在 Typescript 中添加函数之前,如何将变量声明为空对象
- 向对象原型添加函数会导致函数显示在所有“OBJ 中的 X”循环中
- 删除并重新添加函数 JavaScript