javascript - 更改部分属性

标签 javascript jquery class

我有弹出窗口,我可以在其中按属性更改图标:

$(this).attr('class', popup.find('i').attr('icon-class'));

以及该元素的 html:

<i class="small icon-adjustments"></i>

但是你可以看到我有两个类图标调整改变。

问题是当我更改类时,我的脚本也会删除 small 类。我怎样才能只改变类(class)的第二部分?

最佳答案

更改部分 className 属性的最简单方法可能是使用 jQuery:

$(this).removeClass('icon-adjustments').addClass('new-class-name')
<小时/>

但还有一些其他方法。

例如,您可以使用替换:

this.className.replace('icon-adjustments', 'new-class-name')

或者用空格分割className属性,然后替换第n个元素:

var names = this.className.split(' ')
names[1] = 'new-class-name'
this.className = names.join(' ')

如果您只想删除类名的一部分,只需传递一个空字符串即可。

抽象此代码的方法可能如下所示:

function replaceClass(element, oldClass, newClass) {
    var names = element.className.split(' ')
    var i, len;

    for (i = 0, len = names.length; i < len; i++) {
        if (names[i] === oldClass) {
            names[i] = newClass;
        }
    }

    element.className = names.join(' ')
}

http://jsfiddle.net/w3hL0h9d/

关于javascript - 更改部分属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796556/

相关文章:

javascript - 计算对象出现的次数

javascript - JS : how to delay or set an Interval in a for-loop?

python - 子类、意外参数和 Unresolved 引用的问题

javascript - 单击表行中的编辑按钮会出现未捕获的语法错误 : Invalid or unexpected token

javascript - 如何在 0(零)处启动 javascript 'for of' 循环?

javascript - 溢出-y : scroll causing issues with JQuery

python - 使用 python 计算数学表达式而不使用多个函数的算法

jQuery Owl Carousel 2 隐藏导航

javascript - AngularJS,共享数据服务多次触发

jQuery AJAX 问题