Класс захвата, который был найден в функции обратного вызова jQuery - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь получить доступ к классу, которому соответствует селектор jQuery в функции обратного вызова. Например, если у меня есть следующий HTML,

<p class="someclass sorted-1 anotherclass">test</p>

Я бы хотел сопоставить этот элемент и получить имя класса sorted-1. Значение 1 является произвольным. Что-то вроде следующего. getMatchedClass() - псевдокод. Я думал, что смогу получить значение из $(this), но я его не вижу.

$('[class*=sorted-]').on('click', function() {
    var className = getMatchedClass();
    console.log(className); // should output 'sorted-1'
});

Кто-нибудь знает, возможно ли это? Мне трудно придумать условия поиска. Я продолжаю получать результаты по выбранным значениям, а это не то, что я хочу.

Спасибо

Обновление

На основе ответа @ maheer-ali я нашел следующее решение.

   $(function() {
        function column(className) {
            const regex = /sorted-([0-9]+)/;
            return className.match(regex)[0].replace(regex, '$1');
        }
        $('[class*=sorted-]').each(function(i, r) {
            // col is the dashed number after sorted
            // if parsing `sorted-42`, `col` would equal 42
            const col = column($(r).context.className);

            // Use the `col` value here.
            $(r).doSomething({ column: col });
        });
    });

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Вы можете использовать match() и регулярное выражение.И получить первый элемент массива результатов.

$('[class*=sorted-]').on('click', function() {
    var className = this.className.match(/sorted-[0-9]+/)[0];
    console.log(className); // should output 'sorted-1'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p class="someclass sorted-1 anotherclass">test</p>

Другой способ - использовать split() и startsWith().split() className от " " и используйте find(), чтобы получить элемент элемента с startsWith строкой "sorted-"

$('[class*=sorted-]').on('click', function() {
    var className = this.className.split(' ').find(x => x.startsWith('sorted-'))
    console.log(className); // should output 'sorted-1'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p class="someclass sorted-1 anotherclass">test</p>
1 голос
/ 04 апреля 2019

Функция обратного вызова, которую вы передаете, вызывается с событием, которое ее вызвало.

Вы можете получить доступ к event.target.classList, чтобы получить массив всех классов этого объекта.Если у вас есть фиксированный набор шаблонов классов, которые вы ищете, вы можете найти этот список для класса.

Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...