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 из тега?