Используйте jQuery для отслеживания всех внешних ссылок ДРУГИЕ, чем Facebook, Twitter, GooglePlus - PullRequest
0 голосов
/ 04 февраля 2012

Я пытаюсь настроить некоторый код для отслеживания всех внешних ссылок, кроме основных социальных сетей (они уже отслежены там)

вот мой код

    jQuery('a[href^="http://"]:not([href*="' + window.location.host + '"]:not[href*="plus.google.com"]:not[href*="twitter.com"]:not[href*="facebook.com"])').click(function(event){
        event.preventDefault();
        console.log(['_trackEvent', 'External Link', 'Click', jQuery(this).attr('href')]);

        try{
             //_gaq.push(['_trackEvent', 'External Link', 'Click', jQuery(this).attr('href')]);
         }catch(err){};
         return false;
    })

Я предпочитаю использовать несколько: не селекторы, чтобы помешать ему совпадать с Facebook.com, twitter.com и т. Д.

Но мои ссылки на Facebook все еще вызывают это.Есть идеи, что я делаю не так.

1 Ответ

1 голос
/ 04 февраля 2012

Вы неправильно вставили скобки между каждым из ваших :not() селекторов.

Это должно выглядеть так:

jQuery('a[href^="http://"]:not([href*="' + window.location.host + '"]):not([href*="plus.google.com"]):not([href*="twitter.com"]):not([href*="facebook.com"])')

Или, согласно комментарию voithos, вместо этого поместите ваши селекторы атрибутов в вызов .not(), что делает его намного чище IMO:

jQuery('a[href^="http://"]').not('[href*="' + window.location.host + '"], [href*="plus.google.com"], [href*="twitter.com"], [href*="facebook.com"]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...