0

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

<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>

上面提到的其他几个。单击带有文本“添加”的链接时,我需要执行一些逻辑。我知道一种方法是将点击事件附加到标签,然后检查文本。

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

但我不确定这是否是最有效的方法。

各位大神能推荐一下正确的做法吗?

4

3 回答 3

1

您可以为此使用过滤器

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

话虽如此,我会按照我在下面的建议使用过滤器。这最大限度地减少了绑定事件的数量。如果你想让它更高效,我会改为使用delegateoron并绑定到一个共同的父级。这也减少了绑定点击事件的数量。

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

$('a[href*="SWESubmitForm"]').filter(function() {
    if ($(this).text() == "Add") {
        return true;
    }
}).click(function() {
    alert();
    return false;
});​
于 2012-02-19T05:30:11.060 回答
1

您的代码有效,但括号有问题。我在 jsfiddle 上测试过

$('a[href*="SWESubmitForm"]').click(function(){
if($(this).text() == "Add"){
//do something
    alert('ok')}
});​
于 2012-02-19T05:36:06.080 回答
0

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

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

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

于 2012-02-19T05:33:19.837 回答