Обычная версия JavaScript e.preventDefault();

С помощью следующего jQuery на основе script вы можете остановить действие фиктивных ссылок по умолчанию, то есть: <a href="#">

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

Какова была бы простая версия ванили этой script?

Я не программист на JavaScript, но я думаю, что это может быть что-то, что использует return false;. Опять же, я могу быть абсолютно неправым.

Заранее благодарим за помощь.

Ответы

Ответ 1

У вас есть event.preventDefault(), доступный в javascript. В общем случае вы всегда можете использовать return false. Если вы присоединяете обработчик событий, вы гарантированно получаете событие, переданное обработчиком, в отличие от использования onclick или любых других атрибутов элемента (в этом случае вы должны полагаться на определенный объект события, доступный на стороне обработчика, который вы не можете попасть во все браузеры, как в IE, вы бы использовали window.event).

Пример: -

  document.getElementById('someId').addEventListener('click', function(e){ //say this is an anchor
         //do something
        e.preventDefault();
   });

Итак, для всех якорей:

 var anchors = document.getElementsByTagName('a');
 for(i=0, len=anchors.length; i<len; i++){
     anchors[i].addEventListener('click', function(e){e.preventDefault();});
 }

Ответ 2

// Like $('a'), gets all the <a> elements in the document.
var aElements = document.getElementsByTagName('a');
// Create one function object instead of one per <a> element.
// The calling convention is the same for jQuery as for regular JS.
function preventDefaultListener(e) { e.preventDefault(); }
// For each a element,
for (var i = 0, n = aElements.length; i < n; ++i) {
  // register the listener to be fired on click.
  aElements[i].addEventListener('click', preventDefaultListener);
}

Ответ 3

да, вы можете использовать return false;

<a href="" onclick="return false;">test</a>

Ответ 4

Возврат false - путь. Например. если у вашего якоря уже есть href:

<a href="http://www.google.com" onclick="alert('clicked!');return false">Click me</a>

вызов onclick, как это, будет выполнять только функцию, но не навигацию.

Ответ 5

@Рикардо, вы правы сэр.

Не только return false отключает действие по умолчанию для указанного элемента, оно также предотвращает барботирование.

 e.preventDefault();
 e.stopPropagation();

равно

return false;

вы решаете:)