2011-01-12 76 views
0

我目前使用此代碼(通過MooTools一起)建立在#subnav DIV包含特定URL字符串所有錨的陣列,所有的環節:獲得一個頁面上匹配的URL字符串

$('subnav').getElements('a[href*=/'+href+']')

問題是如果我正在尋找work.aspx?subsection=24&project=1,它將與錨點匹配的網址爲work.aspx?subsection=24&project=15

我該如何防止這種情況發生?

+0

你能澄清什麼是你想要的「包含」在這裏是什麼意思?爲了「包含」您搜索的URL字符串(URL的片段?不清楚),href值意味着什麼? – Pointy 2011-01-12 21:46:25

+1

`console.log(document.getElements(「a [href $ = work.aspx?subsection = 24&project = 1]」));` - 結束,不包含哪個不會拾取project = 15。 – 2011-01-13 09:57:14

回答

0

要回答我自己的問題。這與將*更改爲$一樣簡單。

$('subnav').getElements('a[href$=/'+href+']')

0

我能想到的唯一解決方案是使用正則表達式;是這樣的:

$('subnav').getElements('a').filter(function (element, index) { 
    return /work\.aspx\?subsection=24&project=1(?:$|&)/.test(element.href); 
}); 

該正則表達式匹配項目= 1,然後是一個&或字符串的結尾。它使用MooTool(或本機瀏覽器)Array.filter刪除所有不匹配。這不是最優雅的解決方案,尤其是如果你動態使用它,那麼你必須編寫一些代碼來創建一個新的正則表達式。

+1

這也是一個非常昂貴的操作:) – 2011-01-12 22:07:35

+0

同意,但這是我能想到的唯一解決問題的事情。 – Reid 2011-01-12 22:08:45

0

聽起來這應該是由一個301或302重定向更優雅的處理...