2012-06-01 4 views
2

Вот моя проблема. Я редактирую веб-сайт, который генерирует весь контент веб-сайта в цикле со стороны сервера до PHP, а затем меня просят манипулировать веб-сайтом с помощью jQuery.Как проверить, была ли ссылка нажата?

Вопрос здесь в том, что множество тегов ссылок, которые существуют на веб-сайте, не имеют с ними ассоциированных ID. Поэтому меня попросят решить проблему, где, если щелкнуть один из тегов ссылок, происходит логика jQuery.

В моем случае, если ссылка тега с текстом «Просмотреть все». Я должен выполнить некоторое выполнение кода, но как именно я его пишу?

Это так же просто, как написание:

$("a:contains('See All')").click(function() { 
    // do something 
}); 

, потому что, кажется, не работает. Любая помощь?

ответ

4

точного соответствия для See All и так далее

$("a") 
    .filter(function() { // apply filter() to for exact text matching 
      return $(this).text() == 'See All'; 
    }).click(function(e) { 
      // To prevent page reload you need .preventDefault() 
      e.preventDefault(); 
      alert('hello'); 
    }); 

DEMO

Проверить сдерживании See All (не точное совпадение)

$("a").filter(function() { 
    return $(this).text().match('See All'); // a little change here 
}).click(function() { 
    alert('hello'); 
}); 

или просто использовать :contains()

$('a:contains(See All)').on('click', function() { 
    alert('Hello'); 
}); 

DEMO

Некоторые дополнительные примечание

Если ваши ссылки генерировать после DOM готов, то вы должны попробовать с обязательным ".он" событие, как:

$('#container').on('click', 'a:contains(See All)', function() { 
    alert('Hello'); 
}); 

и в случае, если клиент использует JQuery v-1,7, а затем попробовать «.delegate» событие следующим образом:

$('#container').delegate('a:contains(See All)', 'click', function() { 
    alert('Hello'); 
}); 
+0

Хорошо, я проверю это решение завтра и посмотрю, работает ли оно. Очень ценится бутон. Вопрос только в том, что использование фильтра не принесет больших накладных расходов? – ElliotDurden

+0

@ user1429805 нет накладных расходов, и он работает просто отлично проверить мой рабочий образец – thecodeparadox

+0

Спасибо, чувак, он работает как шарм. Я могу использовать «text.match()», поскольку они используют jquery 1.6.x, а не jquery 1.7, который теперь поддерживает событие «on». Я думаю, я мог бы попробовать «делегировать» на своем месте, я попробую. – ElliotDurden

1

Вы пробовали удаление ' в 'See All'?

Кроме того, чтобы убедиться, что он не перенаправляет пользователей по ссылке в href используйте e.preventDefault()

$("a:contains(See All)").click(function(e) { 
    e.preventDefault(); 
    // do something 
}); 

http://jsfiddle.net/99LMh/

+0

Я думаю, что ваша проверка с помощью ': contains()' будет терпеть неудачу, если 'a' содержит текст типа' See All 2' и т. д. – thecodeparadox

+0

Я думаю, что ваша рекомендация на e.preventDefault() была отличной, я тоже мог бы вставить ее туда. Большое спасибо за помощь, вставив код с «thecodeparadox» должен заставить эту вещь работать как шарм. – ElliotDurden

0

Как об использовании сервиса ссылка укорочение (например, Google, https://goo.gl/, или нажмите на clicktotweet.com tweet, бесплатно на 5 и заплатите там после). Используйте сокращенную ссылку.

Это будет отслеживать количество кликов по ссылке.

Теперь, что вы искали, нет

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