Подтвердить что ты не робот

JQuery match regex

var playerClass = $(this).parent().attr('class')

Вопрос только о выборе конкретного класса из dom.

Что я могу добавить в эту строку, чтобы выбрать только класс, в котором есть класс игрока-1, игрок-2, в основном что-либо с префиксом игрока, за которым следует номер?

4b9b3361

Ответ 1

Я не мог точно сказать, что вы задавали с вашим вопросом, так что здесь есть четыре возможности. Надеемся, что одно из этих совпадений соответствует тому, что вы намеревались спросить, или вы можете немного изменить один из них для соответствия.

Чтобы выбрать все элементы ввода с классом player-xx, где xx - число, вы можете сделать это:

var playerClass = $('input[class^="player-"]').filter(function() {
    return((" " + this.className + " ").match(/\splayer-\d+\s/) != null);
});

Первый селектор jQuery получает любое имя класса, начинающееся с "player-". Затем фильтр удаляет любые элементы, которые также не являются "player-nn".

Если вы только пытаетесь проверить, содержит ли одно конкретное имя класса player-nn, вы можете сделать это вот так:

if ((" " + $(this).parent().attr('class') + " ").match(/\splayer-\d+\s/) != null) {
    // the parent has player-nn as a class
}

Если вы просто хотите получить соответствующий класс для родителя, вы можете сделать это с помощью этого:

var matches = (" " + $(this).parent().attr('class') + " ").match(/\s(player-\d+)\s/);
if (matches) {
    playerClass = matches[1];
}

Если вы пытаетесь получить номер после player-, вы можете сделать это следующим образом:

var matches = (" " + $(this).parent().attr('class') + " ").match(/\splayer-(\d+)\s/);
if (matches) {
    playerNum = parseInt(matches[1], 10);
}

Примечание. Все эти примеры используют трюк (который я узнал из jQuery), что если вы добавите пробел в начало и конец общего имени класса, то вы можете искать заданное имя класса с регулярным выражением, ища свой конкретное имя класса окружает с обеих сторон пробелы. Это гарантирует, что вы не будете соответствовать части более длинного имени класса и только соответствовать целым классам. jQuery использует этот трюк в реализации .hasClass().

Ответ 2

Я думаю, что это то, что вам нужно:

var playerClass = $(this).parent().attr('class').match(/player-\d+/);

Ответ 3

Чтобы выбрать все элементы input, у которых есть имя класса, начиная с "player-", вы можете использовать это:

var playerClass = $('input[class^="player-"]');

Селектор "начинается с" описан здесь: http://api.jquery.com/attribute-starts-with-selector/

Это не гарантирует, что за "проигрывателем" сразу следует цифра.