Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery在两个元素之间切换类_Jquery - Fatal编程技术网

使用jQuery在两个元素之间切换类

使用jQuery在两个元素之间切换类,jquery,Jquery,我有两个元素,每个元素都有一个类名。在某些情况下,我希望他们换班。 所以基本上我想这样做: $("#div1").switchClassWith("#div2"); <div id="div1" class="someStylingClass">...content...</div> <div id="div2" class="someOtherClass">...content...</div> $(“#div1”).switchClassW

我有两个元素,每个元素都有一个类名。在某些情况下,我希望他们换班。
所以基本上我想这样做:

$("#div1").switchClassWith("#div2");

<div id="div1" class="someStylingClass">...content...</div>
<div id="div2" class="someOtherClass">...content...</div>
$(“#div1”).switchClassWith(“#div2”);
…内容。。。
…内容。。。
这将导致
#div1
someOtherClass
作为其类名,而
#div2
somestyleingclass
作为其类名。。。有什么建议吗?

您可以使用:

假设您从发布的示例开始,其中每个元素都有一个类或另一个类(但不是两个),那么这将按预期工作

如果需要在不知道要交换哪些类的情况下交换类,可以执行以下操作:

var $div1 = $('#div1'), $div2 = $('#div2'), tmpClass = $div1.attr('class');
$div1.attr('class', $div2.attr('class'));
$div2.attr('class', tmpClass);

伪代码



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
}


.toggleClass('someStyleingClass someOtherClass')
:)@Nick谢谢,修改答案最好缓存div1和div2选择。在这种情况下,您已经选择了两次而不是一次。我知道必须有一些甜蜜的,甜蜜的,一行来解决这个问题!你知道这些类是什么吗,或者它们可能是什么吗?建议:这个例子看起来更像swapclass(div1,div2),而不是div1。switchClassWith(div2)@Nick:是的,我知道类名是什么,所以我只是想找一些比创建函数更简单的东西,必须创建临时变量之类的。。。
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'));


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
}