在Jquery中,使用$(this)获取当前元素执行removeClass方法是正常的,但是使用如下方式则会报错
var doms= $(".layui-nav-itemed");
console.log($(this));
console.log($(this));
if(doms.length>1){
console.log(doms[0]);
doms[0].removeClass("layui-nav-itemed");
}
控制台显示如下
实在是没搞懂到底为啥报错。。。
在Jquery中,使用$(this)获取当前元素执行removeClass方法是正常的,但是使用如下方式则会报错
var doms= $(".layui-nav-itemed");
console.log($(this));
console.log($(this));
if(doms.length>1){
console.log(doms[0]);
doms[0].removeClass("layui-nav-itemed");
}
控制台显示如下
实在是没搞懂到底为啥报错。。。
jQuery帮助我们的就是更快速的获取dom节点和提供的方法以及链式调用,你的第一句话的doms实际上jquery帮助你得到的dom原生节点集,而原生节点是不具备jquery的removeClass方法的,如果想要使用jquery的方法,最后一句可以改为$(doms[0]).removeClass,就可以了
操作第一个元素把背景色从黑色改成了暗红色
首先需要明确:
1.$() 方法获取的是 jQuery对象,可以使用jQuery的所有方法
2.jQuery对象和 DOM对象相互转化的方法:
JQuery 转 DOM方法:
var $v =$("#v") ; //jQuery 对象
var v=$v[0]; //DOM 对象
DOM 转 JQuery:
var v=document.getElementById("v"); //DOM对象
var $v=$(v); //jQuery对象
明确了上面的两点之后再看这个问题:
doms[0] 已经是 DOM 对象了,DOM 对象是没有 removeClass 方法,因为不是 jQuery 对象
可以使用 $(doms[0]).removeClass
10 回答11.4k 阅读
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
$()获取的是jq对象,可以使用jq的方法。
var doms= $(".layui-nav-itemed");这里你只是把获取到的对象赋给了原生jsDOM。原生js是不可以使用jq的方法的