我在动态生成的网页上有几个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没有太多的控制权。
话虽如此,我还是会按照下面的建议使用过滤器。这样可以最大限度地减少绑定的事件数量。如果你想让它更有效率,我会使用delegate
或on
并绑定到一个公共父级。这也减少了绑定点击事件的数量。
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或类,然后只使用这些链接上的选择器。这比试图根据文本过滤所有链接要高效得多。