Javascript получить привязку HREF по клику - PullRequest
4 голосов
/ 11 июня 2010

Как я могу получить ссылку на якорь, когда я нажимаю на него с помощью JavaScript?Я сделал следующее:

function myFunc() {
}
window.onclick = myFunc;

Но как расширить функцию, чтобы реагировать только на нажатия на якоря и получать href?

Ответы [ 4 ]

12 голосов
/ 11 июня 2010
function linkClick(e) {
  alert(e.target.href);
}
links = document.getElementsByTagName('a');
for (i = 0; i < links.length; i++)
  links[i].addEventListener('click', linkClick, false);
2 голосов
/ 11 июня 2010

Ваш document.onclick регистрирует обработчик на весь документ.Но вы должны добавить его к каждой ссылке.Вы можете сделать это с помощью JavaScript, а использование инфраструктуры, такой как Prototype или jQuery, делает это намного проще:

$$('a').invoke('observe', 'click', function(a){
    myFunc(a);
});

Но вы также можете использовать чистый JS, комбинируя функцию getElementsByTagName с циклом (см. Новый ответ Делана).).

1 голос
/ 11 июня 2010

это не будет работать так, вам нужно настроить обработчик onclick для каждого якоря.Самый простой способ сделать это - использовать javascript-фреймворк, такой как jQuery или Prototype или что-то подобное.

расширяет вашу функцию для получения вызывающего объекта:

var myFunc = function(target) {
  var href = target.href;
  // ... your function code that can now see the href of the calling anchor
}

jQuery:

$('a').click(function(){
  myFunc(this);
});

Прототип: см. Кау-Бой * ответ

0 голосов
/ 11 июня 2010
function myFunc(link) {
  alert(link.href);
  return false; // return false if you don't want to actually navigate to that link
}


<a href onclick="return myFunc(link)">something</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...