2013-03-03 98 views
0

我正在循環一些包含鏈接的li。檢索鏈接網址的某些部分的最佳方法?

的聯繫可以是這樣的:

<a href="http://localhost/mlp/books/">Books</a> 

...還有...

<a href="movies/">Movies</a> 

我想是要檢索的鏈接(書籍和電影的最後一級在上面的例子中)並將它們放入一個數組中。

這樣做的最好方法是什麼?

var listOptions = []; 

$('#navigation ul').each(function(index){ 
    var link = $(this).children().html(); 
    ? 
}); 

回答

1

我會使用jQuery map像這樣;

var listOptions = $('#navigation ul').map(function() { 
    var href = $(this).find('a').prop('href'); 

    // Handle a trailing '/', which will screw things up 
    if (href.slice(-1) === '/') { 
     href = href.slice(0, -1); 
    } 

    var last = href.lastIndexOf('/'); 

    // Handle href="foo"; 
    if (last === -1) { 
     last = 0; 
    } 

    // Return the last part of the URL. 
    return href.slice(last); 
}).get(); 

listOptions現在將是URL的最後部分的數組。

2

不知道你的HTML結構到底是什麼,但假設你可以得到錨標籤:

$('a').each(function (index) { 
    var tokens = this.href.split('/') 
     , link = tokens[tokens.length - 2]; 

    // link is now "books" or "movies" 
}); 

注意,這還假定所有的鏈接都尾隨/

例子:http://jsfiddle.net/JVQsm/

1

把它們放在一個數組:

var listOptions = $.map($('#navigation ul li a'), function(el,i) { 
    return el.href.slice(0,-1).split('/').pop(); 
}); 

//listOptions now contains ['books', 'movies'] etc 

FIDDLE

只需更換他們在網站上:

$('#navigation ul li a').attr('href', function(i, href) { 
    var arr = href.split('/'); 
    return arr[arr.length-2]+'/'; 
}); 

FIDDLE

1

也許是這樣的:

var listOptions = []; 

$('a').each(function() { 
    var trimmed = $(this).prop('href').slice(0, -1); 
    listOptions.push(trimmed.substring(trimmed.lastIndexOf('/') + 1)); 
}); 

你已尾中的所有鏈接/。如果情況總是如此,則需要先將其刪除。
這是存儲在trimmed變量,然後提取最後一部分。

如果情況並非總是如此,您可以稍微擴展一下邏輯。檢查最後一個字符是否爲/,比刪除它。如果不是,你不會刪除任何東西

相關問題