HTML якорная ссылка - href и onclick оба? - PullRequest
79 голосов
/ 28 августа 2009

Я хочу создать тег привязки, который выполняет некоторый JavaScript, а затем переходит туда, куда его брал href. Вызов функции, которая выполняет мой JavaScript, а затем устанавливает window.location или top.location в положение href, не работает для меня.

Итак, представьте, что у меня есть элемент с идентификатором "Foo" на странице. Я хочу, чтобы автор якорь похож на:

<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>

При нажатии этой кнопки я хочу выполнить runMyFunction и затем перейти на страницу к #Foo (не вызывать перезагрузку - использование top.location приведет к перезагрузке страницы).

Предложения? Я рад использовать jQuery, если он может помочь здесь ...

Ответы [ 3 ]

120 голосов
/ 28 августа 2009

Просто return true вместо?

Возвращаемое значение из кода onClick определяет, будет ли обработано внутреннее нажатое действие ссылки или нет - возвращение false означает, что оно не обработано, но если вы вернете true, браузер продолжит работу. обработать его после того, как ваша функция вернется и перейти к правильной привязке.

28 голосов
/ 28 августа 2009
<a href="#Foo" onclick="return runMyFunction();">Do it!</a>

и

function runMyFunction() {
  //code
  return true;
}

Таким образом, вы будете выполнять свою функцию И будете переходить по ссылке И следовать по ссылке точно после того, как ваша функция была успешно запущена.

7 голосов
/ 28 августа 2009

Если ссылка должна изменить местоположение только в случае успешного выполнения функции, выполните onclick="return runMyFunction();", и в функции вы вернете true или false.

Если вы просто хотите запустить функцию, а затем позволить тегу привязки выполнить свою работу, просто удалите оператор return false.

В качестве примечания, вы, вероятно, должны использовать вместо этого обработчик событий, так как встроенный JS не очень оптимальный способ работы.

...