PreventDefault внутри атрибута onclick тега

У меня есть ссылки вроде этого:

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

и я хотел бы сделать preventDefault() внутри myfunc, потому что # будет добавлен в адресную строку при нажатии на ссылку (без выполнения return false; или href='javascript:void(0);')

Это возможно? я могу получить событие внутри myfunc

Ответ 1

Я полагаю, что вы можете передать event в функцию inline, которая будет объектом event для поднятого события в браузерах, совместимых с W3C (т.е. более старые версии IE по-прежнему требуют обнаружения внутри вашей функции обработчика событий для просмотра при window.event).

Быстрый пример.

function sayHi(e) {
   e.preventDefault();
   alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>

Ответ 2

Простейшее решение просто:

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

На самом деле это хороший способ перебора кэша для документов с резервным доступом без браузеров, поддерживающих JS (без кэша, если нет JS)

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' + 
Math.round(new Date().getTime() / 1000);" 
href="http://www.domain.com/docs/thingy.pdf">

Если JavaScript включен, он открывает PDF с помощью строки запроса на изъятие кеша, если он просто не открывает PDF файл.

Ответ 3

Попробуйте следующее:

<script>
    $("a").click(function(event) {
        event.preventDefault(); 
    });
</script>

Ответ 4

<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>

Ответ 5

Добавьте уникальный класс к ссылкам и javascript, который предотвращает по умолчанию ссылки на этот класс:

<a href="#" class="prevent-default" 
   onclick="$('.comment .hidden').toggle();">Show comments</a>

<script>
  $(document).ready(function(){

    $("a.prevent-default").click(function(event) {
         event.preventDefault(); 
          });
  });
</script>

Ответ 6

Я думаю, что когда мы используем onClick, мы хотим сделать что-то другое, чем по умолчанию. Итак, для всех ваших ссылок с onClick:

$("a[onClick]").on("click", function(e) {
  return e.preventDefault();
});

Ответ 7

Не можете ли вы удалить атрибут href из тега?