获取由其他类选择的元素的类

时间:2015-10-01 08:06:47

标签: jquery

我有一个有两个类的元素,我希望得到那个没有被用作这个元素的选择器的类。 例:

<div class="something anything"></div>

$(".something").attr("class");//Should return "anything"
$(".anything").attr("class");//Should return "something"

我知道.attr("class")返回&#34;什么东西&#34;,它只是为了例子。

我在SO上搜索了一个答案,比如this one,但我不能用索引来找到&#34;其他&#34; class,因为我需要检索的那个可能是第一个,也可能是第二个。我的元素永远不会有两个以上的类。

所有通知都表示赞赏,可以帮助我解决这个问题。感谢。

5 个答案:

答案 0 :(得分:2)

您需要分两步完成。 1)获取class属性2)然后替换用作选择器的类。

你可以这样做

function getOtherClass(clazz) {
  var classes = $('.' + clazz).attr('class');
  var regex = new RegExp('\\b' + clazz + '\\b');
  return classes.replace(regex, '');
}

snippet.log(getOtherClass('something'));
snippet.log(getOtherClass('anything'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<div class="something anything"></div>

答案 1 :(得分:1)

您可以按以下方式获取:

var result = $('.something').attr('class').split(' ');

for(var i =0; i < result.length; i++)
{
    if(result[i] != "something")
  {
      alert(result[i]);
     //// yu can get your value here.
  }

}

演示: http://jsfiddle.net/Rj9bR/67/

答案 2 :(得分:1)

我认为这是最简单的方法(如果总有两个类):

function getClass (clsName) {
  var classes = $("."+clsName).attr("class").split(" ");
  
  return (classes[0] == clsName) ? classes[1] : classes[0];
}

var cls = "something";
console.log(getClass(cls));

cls = "anything";
console.log(getClass(cls));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="something anything"></div>

答案 3 :(得分:1)

定义一种方法以满足您的需求,例如

function GetClass(elemClass)
{
  var temp= $("." + elemClass).attr("class");
  temp=temp.Replace(elemClass,"").trim();
  return temp; //here you will have the classes you need
}

上述逻辑适用于2个类,因为您的问题所述 但是对于许多类,你只需要将它们转换为数组并移除给定的玻璃,从这里开始就不会花费太多的开销。

答案 4 :(得分:1)

这是另一个简单的解决方案

var myclass = $(".something").attr("class").replace("something","");
myclass = $.trim(myclass);  //remove empty space
  
  alert(myclass);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="something anything"></div>