Как привязать ко всем событиям клика, проверить атрибут .... Эффективно? - PullRequest
1 голос
/ 01 сентября 2011

Я хочу создать привязку, которая фиксирует все события кликов.И затем, если у кликаемого элемента есть атрибут «data-track», сделайте что-нибудь ...

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

Спасибо

Ответы [ 5 ]

4 голосов
/ 01 сентября 2011

Вы должны стремиться к простоте, а не к производительности: пусть jQuery сделает всю работу за вас, и предположите, что разработчики jQuery лучше оптимизируют JS, чем вы, если вы не докажете обратное.

Используйте с атрибутом Селектор jQuery для настройки обработчика активных нажатий для всех элементов с атрибутом data-track:

$('[data-track]').live('click', function () {

});
2 голосов
/ 01 сентября 2011

Присоединить click обработчик событий на уровне document, используя delegate с селектором атрибута [data-track].

$(document).delegate('[data-track]', 'click', function(){
   //Do something here
});
0 голосов
/ 01 сентября 2011

Вам нужно фиксировать все события кликов?Если вы что-то делаете, только если у него есть атрибут «data-track», я думаю, вы должны это сделать:

$("*[data-track]").click(function(){//do something});

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

0 голосов
/ 01 сентября 2011

Я бы сказал так:

$('*[data-track]').click(function(ev){
     // do something
});

или (если какой-то такой контент поступает из Ajax)

$('*[data-track]').live('click', function(ev){
    // do something 
});
0 голосов
/ 01 сентября 2011

Почему вы не привязываете события клика ТОЛЬКО к элементам с атрибутом отслеживания данных?

$('[data-track]').click(function() {
    var data_track = $(this).attr('data-track');
    //code here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...