2012-03-14 4 views
9

У меня есть связь с этой HREF:Как передать ссылку на «this» на функцию href javascript?

href="javascript:foo(this);" 

, когда я называю это «это» указывает на окно объекта, а не ссылку. Как передать ссылку на ссылку?

http://jsfiddle.net/xMGKz/

Редактировать примечание: Вопрос заключается в том, чтобы пройти с HREF, как правило, не - я знаю о OnClick!

И не копировать id и make getElementById, это не «это», это поиск DOM для определенного элемента, не нужно делать его встроенным в HTML.

Anwer is: невозможно.

ответ

18

Когда вы используете «javascript: ....» в href, вы вызываете эту функцию globaly. Не в контексте ссылки. Вы можете попробовать:

<a href="#" onclick="foo(this); return false;">MyLink</a> 

http://jsfiddle.net/xMGKz/1/

+1

при этом вызове 'this' будет ссылаться на элемент' a' независимо. хотя этот метод привязки событий не рекомендуется, лучше привязать его к представлению объекта привязки, а не к элементу DOM. –

+0

@Eliran Malka: То, что lxx просил ... передать элемент A по ссылке. – MatuDuke

+0

Я знаю, что это работает с onclick, просто интересно, почему это не работает с href. Тогда нет способа получить ссылку на это с помощью href, если он называется глобально. – Ixx

1

Во-первых, добавьте поле ID в свой якорь.

Тогда ...

Использование стандартного Javascript:

<a id="someLink" href="javascript:foo(document.getElementById('someLink'));"> 

Использование jQuery:

<a id="someLink" href="javascript:foo($('#someLink'));"> 
+0

Но это заставляет меня вставлять id 2 раза для каждой ссылки в тексте, и этого я хочу избежать. – Ixx

4

субъективно вы бы лучше всего подходит что-то вроде:

<a href="javascript:void(0)" id="myAnchor">My Link</a> 

, а затем по коду:

document.getElementById('myAnchor').onclick = function() { 
    // this is the <a> in here 
    return false; // optional, prevents href from executing at all 
}; 

Таким образом, все немного более ясно. надеюсь, что это поможет -ck

3

Лучше;

<a href="javascript:void(0)" onclick="alert(this.href);">Link</a> 
Смежные вопросы