В некоторых случаях вы не сможете выполнить регистрацию, но если они будут небольшими по сравнению со случаями, которые вы можете сделать, у вас все будет в порядке :).

я есть веб-сайт, где я позволяю другим разработчикам размещать контент. Моя цель - регистрировать клики по каждой гиперссылке (даже контенту, размещенному другими разработчиками), который существует на странице.

Мой первоначальный подход был следующим:

$('a').click(function(event)
             {
                //do my logging
                return true;
             }
);
Теперь с вышеупомянутым подходом я сталкиваюсь со следующими проблемами:Разработчики могут иметь изображения внутри ссылки привязки, поэтому целью событий является изображение, а не ссылкаМногие разработчики имеют свой собственный способ обработки href-кликов, используя событие onclick, а не просто href = '' attrНекоторые разработчики добавляют свой собственный атрибут к тегу и имеют собственные функции для обработки кликов.

В общем, проблема в том, что существует огромное количество доступных тегов привязки, и регистрация кликов не так проста.
Многие случаи позволили мне записать данные, которые я хотел, но в нескольких случаях это плохо нарушало код.

Моя цель публикации на этом форуме была:обсудить, как правильно вести запись кликов по гиперссылкам в динамической средеесть ли там плагин, который позволяет такую ​​функциональность.

Я знаю, что Facebook и Google имеют это, но они имеют полный контроль над тем, что размещается в их среде.

Любая помощь очень ценится.

Ответы на вопрос(2)

овать соответственно.

Например, в первом случае я получаю изображение и поднимаю дом, пока не найдуa пометьте и войдите в систему отсюда.

В некоторых случаях вы не сможете выполнить регистрацию, но если они будут небольшими по сравнению со случаями, которые вы можете сделать, у вас все будет в порядке :).

Решение Вопроса

Добавление обработчика кликов вкаждый ссылкане хорошая идея, Вы должны использовать делегирование событий (которое будет только прикреплятьодин обработчик события в корне документа):

$(document).delegate('a', 'click', function(event) {
    // logging
});

Обновление (17.12.2011):

Начиная с jQuery 1.7, можно использовать.on() [DOCS]:

$(document).on('click', 'a', function(event) {
    // logging
});

Относительно ваших проблем:

Разработчики могут иметь изображения внутри ссылки привязки, поэтому целью событий является изображение, а не ссылка

События всплывают, пока распространение не отменено. Это зависит от того, что вы хотите войти. С участиемdelegate event.target свойство будет указывать на изображение, ноthis (внутри обработчика) будет указывать наa элемент.
Таким образом, у вас не должно быть проблем здесь (пример:http://jsfiddle.net/cR4DE/).

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

(Примечание: Вы можете решить эту проблему, позволяя обработчику события срабатывать вфаза захвата, но IE не поддерживает это (следовательно, jQuery также не поддерживает).

Многие разработчики имеют свой собственный способ обработки href-кликов, используя событие onclick, а не просто href = '' attr

Это не коснется существующих обработчиков событий.

Некоторые разработчики добавляют свой собственный атрибут к тегу и имеют собственные функции для обработки кликов.

Не уверен, что вы имеете в виду здесь.

Это также зависит от того, как другой контент включен. Например. Приведенный выше код не будет отслеживать клики в фреймах.

 Felix Kling13 янв. 2011 г., 10:55
@Neeraj: представьте, у вас есть 1000 ссылок.$('a').click(....) (или же$('a').bind('click', ...)) создаст 1000 обработчиков событий. Но$(document).delegate('a', 'click',...) просто создает один.
 Neeraj13 янв. 2011 г., 07:51
Является ли делегирование события тем же, что и $ (element) .bind?
 Felix Kling13 янв. 2011 г., 10:48
@Neeraj: Это зависит. Это всегда делегирование событий, если вы, слушатель, слушаете события, которые всплывают от потомков. Но$(element).bind('click',...) это так же, как$(element).click(...)то есть привязка обработчика события щелчка к элементам, выбраннымelement. delegate облегчает прослушивание событийопределенный потомки.
 Neeraj13 янв. 2011 г., 11:55
Кроме того, что если я захочу отфильтровать, а затем добавить слушателей ко всем ссылкам, а не добавлять ссылки и вести журнал после того, как щелчок произошел?
 Felix Kling13 янв. 2011 г., 12:04
@Neeraj: я не понимаю, что вы имеете в виду. Что вы хотите отфильтровать? Я думал, что вашей конечной целью было регистрировать клики по ссылкам, что вы хотите сделать сейчас?

Ваш ответ на вопрос