Противодействующий акт javascript .щелчок или альтернатива href

#php #javascript

#php #javascript

Вопрос:

В настоящее время у меня есть сайт и javascript, запущенный в заголовке

  <script type="text/javascript" src="js/jquery-1.6.1.js"></script>
 <script type="text/javascript">
 $(document).ready(function() {
 $('a').click(function(e){
 e.preventDefault();
 document.location.href='shows.php?ref=' this.href;
 return false;
 });
 });
 </script>
  

Он изменяет все теги < a href > . Теперь я добавил php include, чтобы включить панель навигации. Проблема в том, что javascript также изменяет навигационные ссылки, что приводит к их сбою.

Есть ли альтернатива a в href, или я могу противодействовать javascript на странице навигации, или я могу исключить страницу навигации в моем текущем javascript?

Спасибо

Ответ №1:

Используйте правильный селектор, чтобы сузить выбор. Предполагая, что реальное содержимое находится в div с идентификатором content , используйте

 $('#content a').click(function(){...});
  

Вы не опубликовали свою HTML-структуру, но это должно дать вам правильное представление. При необходимости добавьте идентификатор.

Комментарии:

1. Это великолепно! Дает мне намного больше контроля и решает пару других проблем, чтобы! Могу ли я включить несколько содержимого? $(‘#content, #content1, #content2 a’).click(функция(){…}); Это сработает? Спасибо 🙂

2. @Michael: У вас может быть несколько идентификаторов, но каждый идентификатор должен быть уникальным. Если вы хотите обратиться к нескольким элементам с одинаковым именем, используйте классы.

3. @Michael: И элемент может иметь только один идентификатор.

Ответ №2:

Учитывая, что вы можете выбрать навигацию с помощью селектора, например

 <div id="nav"><!-- your links --></div>
  

Вы можете выбрать все ссылки, кроме тех, которые указаны в навигации с помощью

 $("a:not(#nav)").click(/* your function */);
  

Комментарии:

1. Извините, кажется, я действительно был неправ. Это читается как: Выберите все <a /> элементы, кроме <a id=»nav»/> элементов.

Ответ №3:

вы могли бы отменить привязку обработчика события click для элементов привязки на панели навигации.
Допустим, что ваш контейнер навигационной панели идентифицируется идентификатором =»nav_bar_id». Затем вы могли бы сделать что-то вроде :

 $('#nav_bar_id a').unbind('click');  
  

это удалит обработчик onclick из желаемых <a> ‘s без изменения предыдущего скрипта

Ответ №4:

Если вы хотите исключить ваши навигационные ссылки с таким поведением (вместо того, чтобы привязывать поведение к некоторым ссылкам), присвойте им класс, а затем в вашем javascript:

$('a').not('.nav_class').click(function(e){...});