Я хочу создать тег привязки, который выполняет некоторый JavaScript, а затем переходит туда, куда он href
его взял. Вызов функции, которая выполняет мой JavaScript, а затем устанавливает window.location
или top.location
в href
местоположение, для меня не работает.
Итак, представьте, что у меня есть элемент с идентификатором «Foo» на странице. Я хочу создать привязку, похожую на:
<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
При щелчке по нему я хочу выполнить runMyFunction, а затем перейти на страницу #Foo
(не вызывать перезагрузки - использование top.location
приведет к перезагрузке страницы).
Предложения? Я счастлив использовать jQuery, если он может здесь помочь ...
javascript
jquery
html
anchor
психотик
источник
источник
return true;
это решение, но вы также можете позвонитьlocation.hash = '#Foo'
. Это не будет перезагружать страницу.Ответы:
Просто
return true
вместо этого?Возвращаемое значение из
onClick
кода - это то, что определяет, будет ли обработано присущее ссылке действие по щелчку или нет - возвратfalse
означает, что оно не обрабатывается, но если вы вернетесь,true
браузер продолжит обрабатывать его после того, как ваша функция вернется, и перейдет к правильному якорь.источник
undefined
считается ложным для этих целей.<a href="#Foo" onclick="return runMyFunction();">Do it!</a>
а также
function runMyFunction() { //code return true; }
Таким образом, ваша функция будет выполнена, И вы перейдете по ссылке, И вы перейдете по ссылке точно после того, как ваша функция была успешно запущена.
источник
Если ссылка должна изменить местоположение только в случае успешного выполнения функции, то сделайте это,
onclick="return runMyFunction();"
и в функции вы вернете true или false.Если вы просто хотите запустить функцию, а затем позволить тегу привязки выполнить свою работу, просто удалите
return false
оператор.В качестве побочного примечания вам, вероятно, следует использовать вместо этого обработчик событий, поскольку встроенный JS не очень оптимальный способ делать что-то.
источник
При создании чистой HTML-структуры вы можете использовать это.
//Jquery Code $('a#link_1').click(function(e){ e . preventDefault () ; var a = e . target ; window . open ( '_top' , a . getAttribute ('href') ) ; }); //Normal Code element = document . getElementById ( 'link_1' ) ; element . onClick = function (e) { e . preventDefault () ; window . open ( '_top' , element . getAttribute ('href') ) ; } ;
<a href="#Foo" id="link_1">Do it!</a>
источник