0

Я немного застрял в чем-то, и мне нужна ваша помощь.Показать контекстные меню только при нажатии некоторых элементов.

Я пытаюсь показать контекстные меню только тогда, когда пользователь щелкает правой кнопкой мыши по определенным элементам на странице.

Я решил решить эту проблему, используя getElementByClassName (...) и добавив слушателя onClick к каждому из элементов, и когда пользователь нажмет на любой из них, я создам контекстные меню. А затем удалите меню содержимого позже, когда все будет сделано.

Проблема в том, что у меня нет полных имен классов этих элементов, все, что я знаю, что они начинаются с «истории».

Я не уверен, как это сделать. Есть ли способ использовать регулярное выражение и получить все элементы с именем класса? Или это невозможно.

Спасибо заранее,

ответ

0

Там же this library, что позволяет регулярных выражений селекторов.

<div class="story-blabla"></div> 

$("div:regex(class, story.*)") 

Однако, возможно, вы не захотите реализовать полную библиотеку. Есть еще одно решение:

$('div').filter(function() { 
    return this.class.match(/story.*/); 
    }) 

Это вернет объекты, которые вы хотите.

+0

Есть ли способ сделать это с чистым JavaScript. Мне удалось все сделать в этом проекте без использования jquery, хотелось бы сохранить его таким образом. С учетом сказанного, нищие не могут быть выбора: P, я проверю ваше решение. – Shane

+0

Ну, IE не поддерживает [getElementsByClassName] (https://developer.mozilla.org/en-US/docs/DOM/document.getElementsByClassName), но посмотрите последний пример в этой ссылке. – gberger

+0

попробовал ваш ответ '$ ('div'). Filter (function() {return this.class})' возвращает пустой список, в результате я не могу использовать совпадение. '$ ('div') возвращает наши классы div, как и ожидалось. – Shane

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