2010-05-12 2 views
3

У меня есть элементы, генерируемые динамическим html, я хотел бы ссылаться на конкретный href, вызывающий функцию, когда один из многих может ее вызвать.Ссылка (эта) в функции

<a href="javascript:Foo(this)">Link</a> 

Не работает, когда я пытаюсь ссылаться на $ (это). Есть ли другой способ сделать это или мне нужно сделать динамические идентификаторы?

+0

Можете ли вы привести пример того, где и как вы ссылаетесь на '$ (this)'? –

ответ

5

<a href="javascript:Foo(this.href)">Link</a> будет работать, если вы хотите передать href.

Однако обработчики onsomething в коде html не являются jqueryish вообще. Дайте ваши ссылки класс и настроить живой обработчик:

$('.mylink').live('click', function() { 
    // do whatever you want with this or $(this) or this.href or $(this).attr('href') 
}); 
+0

Зачем приносить jQuery в уравнение, где это абсолютно не нужно? Это намного проще сделать, и проще понять, просто используя ванильный javascript. –

+0

@Sean Kinsey спросить OP ... теги OP jQuery, что вы ожидаете? ...: p – Reigel

+0

Я ожидаю, что OP не будет знать лучше (чем предположить, что для этого вам нужен jQuery), и я ожидаю, что эти которые отвечают, чтобы знать лучше. –

-1

Нет смысла в использовании обработчика протокола в javascript: псевдо.
Использование

<a href="#" onclick="Foo(this);">Link</a> 

вместо этого.

1

Помещение частей js в атрибут href - плохая идея. Лучшая практика заключается в добавлении обработчика с addEventListener, но здесь вы можете уйти с настройкой onclick напрямую.

<a href="#" onclick="Foo(event);">Link</a> 

и ваша функция будет как

function Foo(e) { 

    var a = e.target || e.srcElement; 

    // TODO: stuff 

    if (e.preventDefault) { 
     e.preventDefault(); 
    } 
    else { 
     return false; 
    } 
} 

поэтому при нажатии на ссылку, Foo называется с событием как paremeter. объект события имеет ссылку на исходный элемент, либо как target в браузерах стандартов, либо srcElement в IE. Комбинация preventDefault/return false; запрещает браузеру «следовать» ссылке на #.

Редактирование: со второй мыслью, поскольку у вас много ссылок, с помощью jquery для добавления обработчиков рекомендуемый способ, вероятно, лучше (хотя первое решение по-прежнему прекрасное).

Смежные вопросы