2013-11-13 2 views
0

У меня есть элементы, которые имеют классы, как это:Как извлечь определенную часть класса в элемент с помощью jQuery?

class="modal-view arch business" 

Как я могу найти элементы, которые имеют modal- исходное слово в классе и возвращают только «вид» слово или что-то слово является там после того, как модальный?

Я попытался это уже

jQuery("*[class^='modal-'],*[class^='modal-'] a").live('click',function(){ 
var type = jQuery(this).attr('class').split('-')[1]; 
alert(type); 
}); 

Это не работает, он показывает мне только просматривать, если класс является модальным видом, но если есть какие-то другие классы не работает. Может кто-нибудь указать мне в правильном направлении?

Итак, я пытаюсь найти деталь после модальных, но не других классов. Разделение код я использовал работу, если класс имел только модального слово

+0

возможность изменять разметку на все ли вы? Это, очевидно, не лучший способ справиться с вещами. –

+0

Если вы можете изменить разметку, я могу попробовать что-то вроде '

' –

ответ

1

Использование $('*[class^=modal-]').live(...);

Working jsFiddle

+1

Посмотрите http://api.jquery.com/category/selectors/ для получения дополнительных параметров выбора. Это называется: Атрибут начинается с селектора [name^= "value"] – meavo

-1

Я предлагаю (хотя это не проверялось, и я использую on() вместо live()):

$('body').on('click', '[class^="modal-"]', function(){ 
    var classes = this.className.split(/\s+/); 
    for (var i = 0, len = classes.length; i < len; i++){ 
     if (classes[i].indexOf('modal-') === 0) { 
      console.log(classes[i].replace('modal-',''); 
     } 
    } 
}); 

я могу Однако, подумайте о «легком» способе, который библиотека jQuery могла бы предложить для этого.

Следует ли, однако, заметить, что вы решаете другую проблему (состояние представления вашего приложения или диалог modal?) Неправильным образом, что приводит к сложному решению, которое может не потребоваться.

Ссылки:

+0

@adeneo: так, я * мог * забыл добавить в 'split()' ... (я изначально собирался использовать 'classList' а затем решил против него, переключившись на «className», но забыв о разнице в массиве/строке. Вздох. Спасибо за улов! :)) –

+0

Я так и предполагал; Мне любопытно проголосовать, хотя (не обеспокоен как таковой, я просто не знаю, что я что-то ухожу, что-то забыл или забыл что-то еще ...) –

0

Использовать атрибут начинается с селектора, а затем получить className, разделить на пробел, чтобы получить первый класс, считая, что это всегда первый класс, как в примере, затем разделите первый класс на дефис и поп последнего бит:

$(document).on('click', '[class^="modal"]', function() { 
    var klass = this.className.split(/\s+/g)[0]; 
    alert (klass.split('-').pop()); 
}); 

FIDDLE

0

Вы можете добавить регулярное выражение после разделения, чтобы получить первое слово после тире.

jQuery("*[class^='modal-'],*[class^='modal-'] a").live('click',function(){ 
    var type = jQuery(this).attr('class').split('-')[1].match(/\w*/); 
    alert(type); 
}); 

http://jsfiddle.net/xw87B/

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