в Firefox, получите ссылку на якорь в триггере по клику - PullRequest
1 голос
/ 22 января 2012

со следующим html:

<div>
   <a href='#link1' onclick='func()' >Link 1</a>
   <a href='#link2' onclick='func()' >Link 2</a>
   <a href='#link3' onclick='func()' >Link 3</a>
</div>

function func() {
   var href = ??;
   if( href.match(/#link1/) ) {
      ...
   }
}

в хроме (а т.е.?) Можно использовать этот код

var href = window.event.target.href;

но window.event не существует в Firefox

, если события были присоединены через addEventListener, тогда в качестве аргумента может быть e. но не вижу способа передать событие в функцию onclick при объявлении в html.

Ответы [ 2 ]

4 голосов
/ 22 января 2012

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

http://jsfiddle.net/qjXVy/

function func(elem) {
    alert(elem.href);
    return false;
}

<div>
   <a href="#link1" onclick="func(this)" >Link 1</a>
   <a href="#link2" onclick="func(this)" >Link 2</a>
   <a href="#link3" onclick="func(this)" >Link 3</a>
</div>
1 голос
/ 25 января 2012

Вы получаете событие в качестве аргумента в самом обработчике onclick.Таким образом, вы можете сделать:

 <a href="#link1" onclick="func(event)" >Link 1</a>

, а затем вы можете посмотреть на цель события в func.

...