【问题标题】:Get class of an element selected by its other class获取由其他类选择的元素的类
【发布时间】:2015-10-01 08:06:46
【问题描述】:

我有一个包含两个类的元素,我想获取没有用作该元素选择器的类。 示例:

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

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

我知道.attr("class") 返回“任何东西”,这只是为了举例。

我在 SO 上进行了搜索以找到答案,例如 this one,但我无法使用索引来查找“其他”类,因为我需要检索的可能是第一个或第二个.我的元素永远不会有两个以上的类。

感谢所有通知以帮助我处理此问题。谢谢。

【问题讨论】:

  • 您需要获取class 属性的值,将其按空格分隔,然后删除数组中与您不想要的选择器匹配的项目。
  • 您到底想达到什么目的?第二次阅读这听起来像是一个 XY 问题。
  • 感谢您的帮助,已经有很多有用的答案(在我能够解释更多之前)。

标签: jquery


【解决方案1】:

您需要分两步完成。 1) 获取类属性 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>

【讨论】:

  • 感谢您的帮助。这正是我所期待的。
【解决方案2】:

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

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】:

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

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】:

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

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>

【讨论】:

  • 这个运行良好,简短,但不如其他人灵活(在我看来)。感谢您的帮助
  • @EdenSource 谢谢,这只是一个例子,你可以创建一个函数并将你的类作为变量传递,我只是给你一个想法。
【解决方案5】:

你可以得到它:

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/

【讨论】:

  • 这个解决方案是我所期待的,不幸的是,我只能接受一个答案。感谢您的帮助。
  • 我能理解。无论如何很乐意提供帮助! :) @EdenSource
猜你喜欢
  • 2019-01-03
  • 1970-01-01
  • 2012-04-30
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多