2015-12-02 3 views
8

почти во всех сценариях примеры/шаблоны я могу найти, я вижу event.preventDefault(); в конце функции, как это:event.preventDefault() всегда только до конца функций

$('.navbar-nav li a').bind('click', function(event) { 
    var $anchor = $(this); 
    $('html, body').stop().animate({ 
     scrollTop: $($anchor.attr('href')).offset().top 
    }, 1500, 'easeInOutExpo'); 
    event.preventDefault(); 
}); 

С моей точка зрения, идея «немедленно прекратить поведение по умолчанию, то делать все, что мы должны делать», как это:

$('.navbar-nav li a').bind('click', function(event) { 
    event.preventDefault(); 

    var $anchor = $(this); 
    $('html, body').stop().animate({ 
     scrollTop: $($anchor.attr('href')).offset().top 
    }, 1500, 'easeInOutExpo'); 
}); 

Так что мне не хватает?

+0

'немедленно прекратить по умолчанию behavior' События ставятся в очереди, поэтому это не имеет значения, чтобы поместить его сверху или снизу обработчика. Но см. Ответ TrueBlueAussie, обычно удобнее поставить его внизу, если по какой-то причине вы хотите прекратить распространение, используя сокращенный путь 'return false;'. Говорят, я всегда ставил его наверху только для удобства чтения, но это мое собственное мнение –

ответ

11

Это не имеет никакого значения в двух указанных конкретных примерах. Поместите его туда, где вам нравится :)

Обычная причина наличия в конце - это когда он заменяет return false;, как это обычно было, когда должно было быть возвращение. return false является ярлыком для обоих e.preventDefault()иe.stopPropagation().

Другое дело, иметь в виду, когда вам нужно условно остановить его, и в этом случае preventDefault() идет в середине (из if и т.д.) :)

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