2013-12-13 4 views
1

Я хочу удалить динамически назначенный класс из элемента, но не знаю названия этого класса.JQuery удалить nth класс из элемента

Например, если у меня есть:

<div id="myDiv" class="foo bar unknown"></div>

В этом случае неизвестный класс всегда будет находиться в положении 3.

Как я могу добиться этого с помощью Jquery?

Дополнительная информация:

function hideMyDiv(){ 
var rnd=Date.now(); 

$('#myDiv').addClass(rnd); 

setTimeout(function(){ 
$('.'+rnd).hide(); 
    },10000); 
} 

function overRide(){ 
     $('#myDiv').3rdClass().remove(); 
    } 
+5

Почему/как вы не знаете название класса, который вы сами назначаете? – Blazemonger

+2

[это звучит как проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – zzzzBov

+0

У меня есть функция, которая скроет div после появления 'setTimeout' добавив класс 'x', затем' $ ('. x'). hide', действие может быть отменено, удалив 'x', одна и та же функция может добавить другой случайный класс и т. д. – andrew

ответ

2

Вы делаете что-то здесь не так, порядок классов не имеет значения.

Но в любом случае вы можете сделать это

var parts = $('#myDiv').attr('class').split(' '); 
$('#myDiv').removeClass(parts[2]); 
0

ли это с JQuery:

var _classes = $('a#somelink').attr('class').split(" "); 

, то вы можете цикл через этот массив и удалить тот, который вы хотите.

0

В одной строке

$('#myDiv').removeClass($('#myDiv').attr('class').split(' ')[2]); 

Разъяснение:

$('#myDiv')  //jQuery selector 
.removeClass //removed the named class 
$('#myDiv')  //jQuery selector 
.attr('class') //get the class attribute of the element 
.split(' ') //split it into an array, with the perpetrator being a blank space aka ' ' 
[2]   //get the 3rd item in the array, remember it counts from 0, aka 0, 1, 2, 3, 4 ... 
1

Попробуйте написать небольшой вспомогательный метод, который будет принимать элемент DOM.

function removeClass(elem) { 
    var c = elem.className.split(' '), 
     cName; 
    if (c && c.length > 0) { 
     cName = c.splice(0, c.length - 1); 
     elem.className = cName.join(' '); 
    } 
}; 

Вы всегда можете применить условие, которое хотите использовать. Check Fiddle

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