逻辑只在href上有某些文本 - jQuery

时间:2012-02-19 05:26:55

标签: jquery text href siebel

我在动态生成的网页上有几个标签,它们就像这样

<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 个答案:

答案 0 :(得分:1)

您可以使用filter

正如你在另一个答案中所说,你想知道这是否是“正确的方式” - 我会说不。正确的方法当然是为每个链接分配一个类,然后使用类选择器将click事件绑定到它们。但我假设您对html没有太多控制权。

据说我会使用过滤器,如下所示。这最小化了绑定的事件的数量。如果您想提高效率,我会使用delegateon并绑定到公共父级。这也减少了绑定的点击事件的数量。

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

$('a[href*="SWESubmitForm"]').filter(function() {
    if ($(this).text() == "Add") {
        return true;
    }
}).click(function() {
    alert();
    return false;
});​

答案 1 :(得分:1)

你的代码有效,但你有方括号问题。我在jsfiddle上测试了

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

答案 2 :(得分:0)

如果链接ID是可预测的并且如HTML中所示,则可以使用:

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

如果你控制HTML,你可以在所需的链接上放置一个适当的ID或类,只使用那些选择器。这比尝试根据文本过滤所有链接要有效得多。