2016-10-19 3 views
1

До сих пор я использую id, чтобы вызвать клик событий в JQuery, как:Как отметить элементы, которые могут иметь события click?

<button class="btn" id="doAction">Action</button> 

$(document).on('click', '#doAction', function() 
{ 
    // handle the click event 
} 

Однако, что делать, если у меня есть несколько элементов на странице, которые должны вызвать такое же событие щелчка?

Например:

<button class="btn" id="doAction">Action</button> 
... 
<span class="action-trigger" id="doAction">Action</div> 

$(document).on('click', '#doAction', function() 
{ 
    // handle the click event 
} 

Проблема с этим состоит в том, что должен существовать только один уникальный id на любой странице.

Мой вопрос в том, что такое современные соглашения, чтобы справиться с этим?

Одним из решений, о котором я думал, было добавить свойство data-action="doAction" для каждого элемента, который должен вызывать событие click.

Это хороший способ решить эту проблему или есть лучшие способы?

+0

да, данные действия = «DoAction» очень приемлемым способом сделать это. – adrianj98

+3

большинство людей используют 'class' - потому что элемент может иметь несколько классов ...' class = "btn doAction" и 'class =" что-то doAction "будет выбрано с использованием'. .OODA'' например –

+0

@JaromandaX Кажется странным использование 'class', если для него не определены свойства CSS. –

ответ

4

Вы также можете использовать класс. Я лично предпочитаю использовать префикс js- и не добавлять стили CSS к тем, например: js-doaction:

$(document).on('click', '.js-doaction', function() { 
    // handle the click event 
} 

HTML:

<button class="btn js-doaction">Action</button> 
... 
<span class="action-trigger js-doaction">Action</div> 
+0

Кажется, это немного странно, используя класс, если свойства CSS не имеют были определены для него. –

+0

Существуют ли какие-либо преимущества использования 'class' над свойством' data-action'? –

+2

@ user6945880 - Использование класса является обычной практикой. Если у элемента уже есть классы, вы сохраняете несколько символов, не создавая атрибут 'data-', а также 'class'. Но если вы предпочитаете 'data-whatever', тогда просто делайте это, это действительная альтернатива. – nnnnnn

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