我想用 jQuery 替换旧的 html 元素类。这是我正在做的事情:
var elem = $('.my_selector')[0];
elem.css('class', 'my_new_class');
但我收到错误消息“未捕获的类型错误:Object#<HtmlDivElement> has no method css
.
我如何解决它?
我想用 jQuery 替换旧的 html 元素类。这是我正在做的事情:
var elem = $('.my_selector')[0];
elem.css('class', 'my_new_class');
但我收到错误消息“未捕获的类型错误:Object#<HtmlDivElement> has no method css
.
我如何解决它?
$('.my_selector')[0]
正在返回一个 DOM 元素,而不是一个 jQuery 对象。您还需要使用addClass
方法而不是css
. 要获取第一个元素,可以使用:first
伪选择器。
所以这应该是你正在寻找的:
$('.my_selector:first').removeClass('my_selector').addClass('my_new_class');
编辑您可以使用removeClass
/addClass
或toggleClass
. 两者都很好。如果您有一个元素可以同时具有两个类的情况,那么显式添加新类可能会更安全,因为toggleClass
这将删除这两个类。
问题是您试图css()
从 DOM 元素中调用 jQuery 方法(甚至在这里不相关),该元素是用[0]
. 你可以toggleClass()
用来做这项工作:
$(".my_selector:first").toggleClass("my_selector my_new_class");
var elem = $('.my_selector')[0];
这将返回 DOM 元素,而不是 jQuery 对象。只需将其更改为...
var elem = $('.my_selector');
要仅获取与选择器匹配的第一个元素,请使用此...
var elem = $('.my_selector').first();
还有,你有...
elem.css('class', 'my_new_class');
这是不正确的,应该改为这个......
elem.attr('class', 'my_new_class');
尝试这个 ,
var elem = $(".my_selector");
elem.class("newclass");
否则你可以这样做,
var elem = $(".my_selector");
elem.removeClass("my_selector");
elem.addClass("newclass");
$(".my_selector").removeClass('currentClass').addClass('newClass');
如前所述,您需要第一个元素的 jquery 对象。一个好的方法可能是这样的:
$('.my_selector').first().css('class', 'my_new_class');
此外,方法签名的目的是.css( propertyName, value )
设置一个 CSS 属性而不是更改一个类。为此,您需要删除旧类并.removeClass
分别使用 和 添加新类.addClass
。
$($('.my_selector')[0]).css('class', 'my_new_class');
document.getElementsByClassName('my_selector')[0].className = 'my_new_class';