2012-05-25 2 views
2

Мне нужно захватить text between <a> and </a> tags и вызвать всплывающее сообщение. Я попытался сделать это следующим образом. Однако, что мешает, я не могу передать идентификаторы ссылкам так как ссылки динамически сгенерированы. Поэтому я попытался дать им class и использовал jquery для выбора элемента.захват текста по ссылке (<a>) элемент по клику

Тогда я не знаю, как можно выбрать элемент, который можно щелкнуть, используя jquery.

Предположим, ссылки, сгенерированные являются

<a href="#" class="mylinkclass"> first link </a> <br> 
<a href="#" class="mylinkclass"> second link </a> <br> 
<a href="#" class="mylinkclass"> third link </a> <br> 
<a href="#" class="mylinkclass"> fourth link </a> <br> 

В JavaScript, я не знаю, как в данный момент щелкнул элемент может быть выбран с помощью JQuery. Я знаю, что $('.mylinkclass') вернет массив из указанных выше 4 ссылок. Как я могу написать код селектора?

$(document).ready(function(){ 
    $('.mylinkclass').click(function(){getLinkText();}); 
} 

function getLinkText(){ 
    alert($(this).text()); 
    return false; 
} 

ответ

8

Изменить это ...

$('.mylinkclass').click(function(){getLinkText();}); 

к этому ...

$('.mylinkclass').click(getLinkText); 

Так что вы присваиваете функцию непосредственно в качестве обработчика. Таким образом, его значение this будет ссылкой на элемент, нажатый.


Если есть другая работа, которую нужно сделать перед вызовом getLinkText, вы можете либо передать элемент, передав this в качестве аргумента ...

$('.mylinkclass').click(function(){ 
    // do other work 
    getLinkText(this); 
}); 

function getLinkText(el){ 

    alert($(el).text()); 
    return false; 
} 

Или с помощью .call или .apply сделать this в функции имеют то же значение ...

$('.mylinkclass').click(function(){ 
    // do other work 
    getLinkText.apply(this, arguments); 
}); 

function getLinkText(){ 

    alert($(this).text()); 
    return false; 
} 
+1

+1 для кода «другой работы», потому что в большинстве проектов мы должны были бы делать такие вещи .. –

+0

есть некоторые проблемы с выбором. Даже '$ ('. mylinkclass'). (function() { alert ('hi'); }); 'не вызывает окно предупреждения. Сгенерированные ссылки относятся к классу' class = mylinkclass' – damon

+0

html в http://pastebin.com/rKy1YBpG – damon

0

Вы также можете написать:

$('.mylinkclass').click(function(e) 
    { 
    e.preventDefault(); // we don't want to cause the page to refresh or jump to top 
    alert($(this).text()); 
    }); 
0

Ваша проблема заключается в том, как вы настраиваете/вызываете функцию getLinkText().

Попробуйте следующее:

$('.mylinkclass').click(getLinkText); 

Вам необходимо пройти getLinkText себя в качестве обработчика щелчка, а не анонимная функция, которая вызывает getLinkText

1

Ваш this ссылка теряется, когда вы вызываете его изнутри анонимным функция

$('.mylinkclass').click(function(){ 
    alert($(this).text()); 
    return false; 
}); 

или

$('.mylinkclass').click(getLinkText); 

function getLinkText(){ 
//.. 

или

$('.mylinkclass').click(function() { 
    getLinkText(this); 
}); 

function getLinkText(that){ 
    alert($(that).text()); 
    return false; 
} 
0

Вы можете получить текст в ссылке с функцией текст()$ ("mylinkclass "). Текст ($ (". Ссылка").text()

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