我在动态生成的网页上有几个标签,它们就像这样
<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
}
但我不确定这是否是最有效的方法。
你们可以建议正确的方法吗?
答案 0 :(得分:1)
您可以使用filter。
正如你在另一个答案中所说,你想知道这是否是“正确的方式” - 我会说不。正确的方法当然是为每个链接分配一个类,然后使用类选择器将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;
});
答案 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或类,只使用那些选择器。这比尝试根据文本过滤所有链接要有效得多。