我目前使用此代碼(通過MooTools一起)建立在#subnav
DIV包含特定URL字符串所有錨的陣列,所有的環節:獲得一個頁面上匹配的URL字符串
$('subnav').getElements('a[href*=/'+href+']')
問題是如果我正在尋找work.aspx?subsection=24&project=1
,它將與錨點匹配的網址爲work.aspx?subsection=24&project=15
。
我該如何防止這種情況發生?
我目前使用此代碼(通過MooTools一起)建立在#subnav
DIV包含特定URL字符串所有錨的陣列,所有的環節:獲得一個頁面上匹配的URL字符串
$('subnav').getElements('a[href*=/'+href+']')
問題是如果我正在尋找work.aspx?subsection=24&project=1
,它將與錨點匹配的網址爲work.aspx?subsection=24&project=15
。
我該如何防止這種情況發生?
要回答我自己的問題。這與將*
更改爲$
一樣簡單。
$('subnav').getElements('a[href$=/'+href+']')
我能想到的唯一解決方案是使用正則表達式;是這樣的:
$('subnav').getElements('a').filter(function (element, index) {
return /work\.aspx\?subsection=24&project=1(?:$|&)/.test(element.href);
});
該正則表達式匹配項目= 1,然後是一個&
或字符串的結尾。它使用MooTool(或本機瀏覽器)Array.filter
刪除所有不匹配。這不是最優雅的解決方案,尤其是如果你動態使用它,那麼你必須編寫一些代碼來創建一個新的正則表達式。
這也是一個非常昂貴的操作:) – 2011-01-12 22:07:35
同意,但這是我能想到的唯一解決問題的事情。 – Reid 2011-01-12 22:08:45
聽起來這應該是由一個301或302重定向更優雅的處理...
你能澄清什麼是你想要的「包含」在這裏是什麼意思?爲了「包含」您搜索的URL字符串(URL的片段?不清楚),href值意味着什麼? – Pointy 2011-01-12 21:46:25
`console.log(document.getElements(「a [href $ = work.aspx?subsection = 24&project = 1]」));` - 結束,不包含哪個不會拾取project = 15。 – 2011-01-13 09:57:14