логика только на href с определенным текстом - jQuery - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть несколько тегов на динамически генерируемой веб-странице, и они похожи на это

<a href='JavaScript:SWESubmitForm(document.SWEForm9_0,s_12,"s_9_1_35_1","1-3ZR4-1743")'  tabindex=997  id='s_9_1_35_1'>Add</a>

<a href='JavaScript:SWESubmitForm(document.SWEForm9_0,s_13,"s_9_1_36_1","1-3ZR4-1743")'  tabindex=997  id='s_9_1_36_1'>Cancel</a>

несколько других, как упомянуто выше. Мне нужно выполнить некоторую логику при нажатии на ссылку с текстом «Добавить». Я знаю, что один из способов - прикрепить событие click к тегам, а затем проверить текст.

$('a[href*="SWESubmitForm"]').click(function(){
if($(this).text() == "Add"){
//do something
}

но я не уверен, что это самый эффективный способ сделать это.

Не могли бы вы, ребята, предложить правильный способ сделать это?

Ответы [ 3 ]

1 голос
/ 19 февраля 2012

Ваш код работает, но у вас есть проблемы с скобками. Я тестировал на jsfiddle

$('a[href*="SWESubmitForm"]').click(function(){
if($(this).text() == "Add"){
//do something
    alert('ok')}
});​
1 голос
/ 19 февраля 2012

Вы можете использовать фильтр для этого.

Поскольку вы отправили в другом ответе, что хотите знать, является ли это "правильным путем" - я бы сказал, нет.Конечно, правильным способом было бы назначить класс для каждой из этих ссылок, а затем использовать селектор класса, чтобы связать с ними событие click.Но я предполагаю, что у вас нет слишком большого контроля над HTML.

При этом я буду использовать фильтр, как я предложил ниже.Это минимизирует количество событий, которые связаны.Если вы хотите сделать его еще более эффективным, я бы вместо этого использовал delegate или on и связывал его с общим родителем.Это также уменьшает количество связанных событий клика.

http://jsfiddle.net/mrtsherman/Uypuq/

$('a[href*="SWESubmitForm"]').filter(function() {
    if ($(this).text() == "Add") {
        return true;
    }
}).click(function() {
    alert();
    return false;
});​
0 голосов
/ 19 февраля 2012

Если идентификатор ссылки предсказуем и как показано в вашем HTML, вы можете просто использовать это:

$('#s_9_1_35_1').click(function() {
    // put your code here
});

Если вы управляете HTML, вы можете либо поставить соответствующий идентификатор или класс на нужные ссылки и просто использовать селекторы из них. Это гораздо эффективнее, чем пытаться отфильтровать все ссылки на основе их текста.

...