JQuery я должен сгруппировать селекторы с аналогичными событиями, как 1 селектор. - PullRequest
3 голосов
/ 26 февраля 2011

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

ex:

$('#id').live('click'....)
$('div').live('click'....)
$('.class p').live('click'..)

или лучше объединить все в одном селекторе, например

$('#id, div, .class p')..

Иногда мне трудно объединить все в одном селекторе, так как я должен знать, какой элемент был нажат.Не все предметы имеют идентификаторы.некоторые имеют идентификаторы, некоторые классы, а некоторые просто HTML-теги.Если лучше объединить все в одном селекторе, как я могу определить, какой из элементов был нажат.

Ответы [ 3 ]

3 голосов
/ 26 февраля 2011

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

Если элементы могут быть сгруппированы вместе , поскольку они имеют одинаковое поведение , то на самом деле нет причин не группировать селекторы.

При связывании события click с несколькими элементами, $(this) всегда ссылается на элемент clicked, что позволяет вам выполнять некоторые специфичные для элемента подпрограммы, если хотите. Например:

HTML:

<ul>
    <li>Some item</li>
    <li>Another one</li>
    <li>And another one</li>
</ul>
<span>Wee</span>

JavaScript:

$(function() {
    $('span, li').click(function() {
        $(this).append($('<div>Child div added to clicked element</div>'));
    });
});

Пример:

http://jsfiddle.net/ArondeParon/db8K3/

1 голос
/ 26 февраля 2011

Если бы все они имели одинаковую логику кликов, я бы объединил их селекторы, чтобы уменьшить детализацию кода.Если вы хотите сказать, по какому элементу была нажата кнопка, вы можете сделать это, обратившись к свойству target события .Свойство target имеет большую степень детализации, чем ссылка this.

0 голосов
/ 26 февраля 2011

Вы можете использовать

$(this).attr('id')

чтобы найти идентификатор выбранного элемента. Хорошо использовать один селектор, если вы делаете в общем то же самое, иначе, возможно, чище выделите его.

...