2015-11-04 2 views
-1

Я просмотрел много похожих примеров на stackoverflow и других веб-сайтах, но я не могу понять, почему my preventdefault() не работает. Может ли кто-нибудь указать мне в правильном направлении?предотвратить по умолчанию не работает для меня

jQuery(document).ready(function($) { 
 

 

 
    $(function() { 
 
    $('.cshero-team-carousel-item-wrap a').on('click', function(event) { 
 
     event.preventDefault(); 
 

 
     console.log('hit'); 
 
    }); 
 
    }) 
 
});
<div class="cshero-team-title-wrap"> 
 
    <h3 class="cshero-team-title"> 
 
       <a style="color:#005780;" title="world" href="http://google.com" rel="">world</a> 
 
      </h3> 
 
</div>

+1

Работает отлично для меня http://jsfiddle.net/j08691/7z98w6eq/. Какие ошибки вы получаете? – j08691

+0

@ j08691 Если вы запустите код в вопросе, вы увидите 'Uncaught ReferenceError: $ is not defined' –

+0

@JuanMendes - Да, OP не включил jQuery в свой пример. Это либо потому, что они не знакомы с фрагментами стека и не знают, как это сделать, либо фактически оставили его в своем реальном коде. В любом случае, фактический jQuery работает, поэтому я голосую, чтобы закрыть вопрос как не относящийся к теме из-за опечатки. Либо это, либо это дубликат из десятков других вопросов SO о том, что не включает jQuery. – j08691

ответ

0

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

Uncaught ReferenceError: $ is not defined

$(function() { 
 
    $('.cshero-team-title a').click(function(event) { 
 
    event.preventDefault(); 
 
    console.log('hit'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="cshero-team-title-wrap"> 
 
    <h3 class="cshero-team-title"> 
 
    <a style="color:#005780;" title="World" href="http://google.com" rel="">World</a> 
 
    </h3> 
 
</div>

В качестве альтернативы, you can use delegation который будет слушать на элемент тела (который всегда доступен), но игнорирует щелчки, если целевое событие не соответствует селектор, переданный в.

$(document.body).click('.cshero-team-title a', function(event) { 
 
    event.preventDefault(); 
 
    console.log('hit'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="cshero-team-title-wrap"> 
 
    <h3 class="cshero-team-title"> 
 
    <a style="color:#005780;" title="World" href="http://google.com" rel="">World</a> 
 
    </h3> 
 
</div>

Перед публикацией вопроса всегда следует отлаживать. Это включает в себя:

  • Проверьте консоль на наличие ошибок
  • Добавить точки останова в коде и смотреть его запустить
+0

. Я добавил jQuery в другую часть страницы, которую здесь просто не показано. Так что это все еще не работает. – Rafael

+0

Вы, вероятно, используете '$ ('. Cshero-team-title a')' перед загрузкой HTML, поэтому '$ ('.cshero-team-title a')' возвращает пустой набор и не устанавливает обработчик на любых элементах. Вы можете проверить это, добавив 'console.log ($ ('. Cshero-team-title a'). Length)', если он равен нулю, это потому, что он работает до того, как HTML доступен, добавьте код в обработчик нагрузки: '$ (function() {/ * регистр обработчика здесь * /})' –

0

ли вы обернуть обработчик событий в документе готовой функции? если не добавлено событие клика в ссылку, потому что ссылка не существует при запуске javascript-кода.

$(function(){ 
    $('.cshero-team-title a').click(function(event) { 
     event.preventDefault(); 
     console.log('hit'); 
    }); 
}); 
+0

См. мой ответ для альтернативы, которая не должна ждать готового обработчика, используя [делегирование событий] (https://learn.jquery.com/events/event-delegation /) –

+0

Да, я тоже это сделал – Rafael

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