Jquery 如果包含某个类,如何将元素的所有类名移动到另一个?
我试图编写一个条件语句来查找在某个类的元素中找到的任何其他类,并将它们附加到另一个元素中 我的代码如下:Jquery 如果包含某个类,如何将元素的所有类名移动到另一个?,jquery,if-statement,Jquery,If Statement,我试图编写一个条件语句来查找在某个类的元素中找到的任何其他类,并将它们附加到另一个元素中 我的代码如下: <div class="options-container class1 class2 class3-ul class4"> <ul class=""> <li> <div class="other-element"></div> </li> </ul
<div class="options-container class1 class2 class3-ul class4">
<ul class="">
<li>
<div class="other-element"></div>
</li>
</ul>
</div>
$('.options-container').each(function(i){ //holds multiple classes
var classList = $('ul', this).attr('class').split(/\s+/),
var myClasses = ['class1', 'class2', 'class3'];
//what classes to look for and match.
$.each(classList, function(index, item) {
if (item === myClasses.index()) {
$('.other-element').addClass(item); // append matched classes
}
});
});
我不确定我在用索引做什么
基本上,我只是想找出div元素.options容器是否有某些类,如果有,将它们移动到元素的类中。其他元素
//无需为每次迭代重新声明
var myClasses=['class1','class2','class3'];
$'.options容器'.eachfunctioni{
var$this=$this;
var classList=$this.attr'class'.split/\s+/;
var classesToAdd=myClasses.filterfunctionelement{
返回classList.indexOfelement>-1;
};
//仅更改作为ul子级的其他元素
//您可以给addClass一个数组。您不必显式地
//环路
$this.find'.other element'.addClassEstoAdd;
//从您的评论中,您询问是否可以删除这些类
//从父级。您可以使用removeClass执行此操作。
$this.removeClassclassesToAdd;
};
div.class1.class2.class3{颜色:红色;}
div.class1.class2{颜色:绿色;}
div.class1{颜色:蓝色;}
A.
B
C
你能举一个你正在使用的HTML的例子吗?好的,那么你的选择器是错误的。您正在“ul”中寻找子“ul”。这在标记中不存在。将$'ul',this更改为$this,然后查看它是否开始工作检查浏览器控制台-您有语法错误。意外标记varitem===myClasses.index究竟在做什么?我没有看到数组的索引方法@Taplar.index,不确定我在这里使用的选项是否正确。。但在javascript中,is将是indexofn我如何做$this.removeClassesToAdd将它们从原始位置删除?感谢@Taplar帮助我完成了这项工作,尽管其他人因为一些拼写错误而否决了我的问题。@samjco是的,你也可以给removeClass一个数组,因为我不得不添加:classesToAdd=+classesToAdd+;classesToAdd=classesToAdd.replace;classesToAdd=classesToAdd.replace;让类显示并删除逗号…或者它根本不起作用-奇怪,我不明白你的意思。我已经编辑了上面的答案,将removeClass也包括在内。如您所见,检查元素时addClass和removeClass都可以工作。