У меня есть элементы, которые имеют такие классы:
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 );
});
Это не работает. Он показывает мне просмотр, только если класс modal-, но если есть другие классы, он не работает. Может кто-нибудь указать мне в правильном направлении?
Поэтому я пытаюсь найти часть после modal-, но не других классов. Используемый множитель split используется, если класс имел только слово modal-
Используйте $('*[class^=modal-]').live(...);
Вы можете добавить регулярное выражение после разделения, чтобы получить первое слово после тире.
jQuery("*[class^='modal-'],*[class^='modal-'] a").live('click',function(){
var type = jQuery(this).attr('class').split('-')[1].match(/\w*/);
alert( type );
});
Использовать атрибут начинается с селектора, затем получить className, разделить на пробел, чтобы получить первый класс, считая его всегда первым классом, как в примере, а затем разбить первый класс на дефис и поп последнего бита:
$(document).on('click', '[class^="modal"]', function() {
var klass = this.className.split(/\s+/g)[0];
alert ( klass.split('-').pop() );
});
Я бы предложил (хотя это не проверено, и я использую 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
диалог?) Неправильным образом, что приводит к сложному решению, которое может не потребоваться.
Рекомендации:
split()
... (Я изначально собирался использовать classList
а затем решил classList
от него, переключившись на className
, но забыв о разнице между массивами и строками. Вздох. Спасибо за подвох! :))
<div data-modal-type="view" ... ></div>