2012-08-22 39 views
0

提取HREF我有幾個被動態生成的一個標籤在一個企業應用像下面與特定文本

<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 

我想設置我的過濾器基於標籤內的文本()。我希望它能更好地澄清問題。

回答

0

選擇您想要的元素。如果沒有他們兩個只是使用.EQ(),因爲它返回符合您selector- .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'); 
+0

正如我所說,他們是動態生成的,可以有幾個在一個頁面上,那裏的順序可以隨時間變化。所以我不能依靠我的解決方案。我必須確保我獲得具有特定文本的標籤的價值。 – Neel

+0

@ user1017268我用一個循環更新了我的答案..它將搜索包含「1-SXP9NW」的元素,其中包含href –

+0

@ user1017268我用更多的方法更新了我的答案,以獲得您想要的元素 –

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); 
    } 
});​ 
+0

是不可能使用過濾器來添加它的文本條件..所以我不必運行循環呢? – Neel

+0

您應該可以在這裏使用.filter()代替.each()。我不確定你在回收的數據上做了什麼,所以我堅持每一個。 – j08691