我有两个元素,每个元素都有一个类名。在某些事件上,我希望他们换班 所以基本上我想做这样的事情:
$("#div1").switchClassWith("#div2");
<div id="div1" class="someStylingClass">...content...</div>
<div id="div2" class="someOtherClass">...content...</div>
这会导致#div1
有someOtherClass
作为其班级名称,#div2
有someStylingClass
...有任何建议吗?
答案 0 :(得分:9)
您可以使用toggleClass()
:
$('#div1,#div2').toggleClass('someStylingClass someOtherClass');
假设您从发布的示例开始,其中每个元素都有一个类或另一个类(但不是两个),那么这将按预期工作。
如果你需要交换课程而不知道你正在交换哪些课程,你可以这样做:
var $div1 = $('#div1'), $div2 = $('#div2'), tmpClass = $div1.attr('class');
$div1.attr('class', $div2.attr('class'));
$div2.attr('class', tmpClass);
答案 1 :(得分:1)
function SwitchClass(a,b){
var aClass = a.attr('class');
var bClass = b.attr('class');
a.removeClass(aClass).addClass(bClass);
b.removeClass(bClass).addClass(aClass);
}
SwitchClass($('div1'),$('div2'));
答案 2 :(得分:1)
伪代码
function swapClasses(element1, element2)
{
class1List1 = getClassList(element1)
classList2 = getClassList(element2)
for class in classList1
{
element2.addClass(class)
}
//similarly for element1
}
function getClassList(element)
{
//refer to http://stackoverflow.com/questions/1227286/get-class-list-for-element-with-jquery
}
答案 3 :(得分:0)