我在企业应用程序中动态生成了几个标记,如下所示
<a href='JavaScript:SWESubmitForm(document.SWEForm1_0,s_1,"s_1_1_1_0","1-SXPINW")' onclick='Edit_SList__0__Control__Renew_SPO__onclick(null, "s_1_1_1_0")' tabindex=2997 id='s_1_1_1_0'>Renew PO</a>
<a href='JavaScript:SWESubmitForm(document.SWEForm1_0,s_2,"s_1_1_4_0","1-SXP9NW")' onclick='Edit_SList__0__Control__XRXAddFunds__onclick(null, "s_1_1_4_0")' tabindex=2997 id='s_1_1_4_0'>Add Funds</a>
我有以下jQuery代码来提取标识来自标记
的记录的唯一值var href = $('a[href*="SWESubmitForm"]').attr('href');
var rowId = "";
if( href != ""){
hrefAr = href.split('","');
rowId = hrefAr[hrefAr.length - 1];
rowId = rowId.substr(0,(rowId.length - 2));
}
上面的代码给出了值 1-SXPINW 但我需要获得值 1-SXP9NW (第二个链接,并且在一个页面上可能有多个链接)。 我需要为文本添加过滤器,基本上只检索具有特定文本的链接的值,例如“添加资金”。
我知道可以使用每个并添加if语句来检查文本,但我想通过过滤器来完成。
请帮助!!!
修改
我想我没有正确解释这个问题。我需要以这样的方式设置过滤器
if (text within a tag == "Add Funds") then get the value of ID within href attribute
我想根据标签中的text()设置我的过滤器。我希望它能更好地澄清问题。
答案 0 :(得分:0)
选择你想要的元素..如果有两个只使用.eq(),因为它返回与你的选择器匹配的所有元素 - .eq将返回一个jquery对象
var href = $('a[href*="SWESubmitForm"]').eq(1).attr('href'); // <-
或将其转换为dom元素
var href = $('a[href*="SWESubmitForm"]')[1].href;
此外,由于您有一个ID
,您只需使用ID
选择器选择所需的一个
var href = $('#s_1_1_4_0').attr('href');
或者如果有太多而你需要找到9NW的那个..只需在支票中使用indexOf
$('a[href*="SWESubmitForm"]').each(function(){
var rowId = "";
if(this.href.indexOf('1-SXP9NW') > -1){ // <-- use indexOf to see if href contains the string
hrefAr = this.href.split('","');
rowId = hrefAr[hrefAr.length - 1];
rowId = rowId.substr(0,(rowId.length - 2));
}
});
使用过滤功能
var href = $('a[href*="SWESubmitForm"]').filter(function(){
return this.href.indexOf('1-SXP9NW') > -1;
}).attr('href');
毕竟这个..为什么不用这个选择器?
$('a[href*="1-SXP9NW"]')
修改
如果Add Funds
是静态的,请使用:contains()选择器
var href = $('a:contains("Add Funds")').attr('href');
答案 1 :(得分:0)
您可以使用.each()
循环链接并从href属性中提取所需的值。
$('a[href*="SWESubmitForm"]').each(function() {
var rowId = "";
var href = $(this).attr('href');
if (href != "") {
hrefAr = href.split('","');
rowId = hrefAr[hrefAr.length - 1];
rowId = rowId.substr(0, (rowId.length - 2));
console.log(rowId);
}
});