2015-10-01 5 views
1

У меня есть элемент, который имеет два класса, и я хочу получить класс, который не использовался в качестве селектора для этого элемента. Exemple:Получить класс элемента, выбранного другим классом

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

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

Я знаю, что .attr("class") возвращает "что-то что-нибудь", это было просто для Exemple.

Я нашел поиск на SO, чтобы найти ответ, например this one, но я не могу использовать индекс, чтобы найти «другой» класс, потому что тот, который мне нужно получить, может быть первым, или вторым. У моей элемента никогда не будет более двух классов.

Все уведомления оценены, чтобы помочь мне справиться с этим. Благодарю.

+1

Вы должны были бы получить 'значение class' атрибута, разделить его пространство, а затем удалить элемент в массиве, который соответствует селектор ты по не хочу. –

+0

Что именно вы пытаетесь достичь? Во втором чтении это звучит как проблема XY. –

+0

Спасибо за помощь, уже есть много полезных ответов (прежде чем я смог объяснить немного больше). – EdenSource

ответ

2

Вам нужно будет сделать это в 2 этапа. 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>

+0

Благодарим за помощь. Это именно то, чего я ждал. – EdenSource

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. 
    } 

} 

Demo: http://jsfiddle.net/Rj9bR/67/

+0

Это решение - то, чего я ожидал, к сожалению, я могу принять только один ответ. Спасибо за помощь. – EdenSource

+0

Я могу понять. В любом случае рады помочь! :) @EdenSource – Neel

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>

+0

Это решение - то, чего я ожидал, к сожалению, я могу принять только один ответ. Спасибо за помощь. – EdenSource

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-х классов, как ваша проблема утверждает , но для многих классов нужно просто CONVER их в массив и удалить данное стекло, это не займет чтобы сделать это.

+0

Это решение - то, чего я ожидал, к сожалению, я могу принять только один ответ. Спасибо за помощь. – EdenSource

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>

+0

Это хорошо работает, коротко, но менее гибко, чем другие (на мой взгляд).Спасибо за помощь – EdenSource

+0

@EdenSource спасибо, это был просто пример, вы можете создать функцию и передать свои классы в качестве переменной, я просто дал вам идею. –

Смежные вопросы