仅在href上具有特定jQuery的逻辑



我在动态生成的网页上有几个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
}

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

你们能提出正确的方法吗?

您的代码可以工作,但括号有问题。我在jsfiddle 上进行了测试

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

您可以为此使用筛选器。

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

话虽如此,我还是会按照下面的建议使用过滤器。这样可以最大限度地减少绑定的事件数量。如果你想让它更有效率,我会使用delegateon并绑定到一个公共父级。这也减少了绑定点击事件的数量。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新