我想根据网址中的参数重新排序我的商品列表。
这是我的清单:
<ul>
<li><a href='page.php?paramValue=1'>iten1</a></li>
<li><a href='page.php?paramValue=2'>iten2</a></li>
<li><a href='page.php?paramValue=3'>iten3</a></li>
<li><a href='page.php?paramValue=4'>iten4</a></li>
并且如果例如url: mydomain.com/page.php?paramValue=3 该列表应该重新排序并且第3个li应该成为列表中的第一个,当页面加载时(当点击任何iten时,页面加载agian),如下所示:
<ul>
<li><a href='page.php?paramValue=3'>iten3</a></li>
<li><a href='page.php?paramValue=1'>iten1</a></li>
<li><a href='page.php?paramValue=2'>iten2</a></li>
<li><a href='page.php?paramValue=4'>iten4</a></li>
</ul>
任何提示??
答案 0 :(得分:1)
尝试以下代码。没有测试,但应该工作。
var ulElement = $("ul"); // this may change if you want a specific ul element.
var linkElems = window.location.href.replace(/.*\?/,"").split('&');
var paramValueStr = "";
for (var i=0; i < linkElems.length; i++) {
if (linkElems[i].indexOf("paramValue") == 0) {
paramValueStr = linkElems[i];
}
}
if (paramValueStr == "") {
return;
}
var elemToRemove = ulElement.find('a [href*="' + paramValueStr + '"]').parent();
elemToRemove.remove(); // remove from original place
elemToRemove.prependTo(ulElement); // insert into beginning of ul
答案 1 :(得分:0)
假设它们总是相同的,你可以使用string.split()来获取值之后的数字:
href = $(a).attr('href');
href.split()
//href is now an array[page.php?paramValue, number];
//you can use href[1] to sort the elements.
如果您想继续使用JQUery,可以使用一个插件:
http://james.padolsey.com/javascript/sorting-elements-with-jquery/
如果您使用该插件,您的代码将如下所示:
$('li').sortElements(function(a, b){
aHref = $(a).attr('href');
bHref = $(b).attr('href');
aHref = aHref.split();
bHref = bHref.split();
return aHref[1] > bHref[1] ? 1 : -1;
});
不可否认,这可能会变得更漂亮,但它应该可行
答案 2 :(得分:0)
尝试:
下面的代码查找以href
结尾的3
抓取父(li)并将其添加到ul。
$('a[href$="3"]').parent().prependTo('ul');
添加更严格的选择器作为相关选择。
http://jsfiddle.net/iambriansreed/DDAvY/2/
<强>更新强>
以下更精确一点。以下代码会查找包含 href
paramValue=3
$('a[href*="paramValue=3"]').parent().prependTo('ul');
答案 3 :(得分:-1)
试试这个:
的javascript:
elementID = /[0-9]+/.exec(/paramValue=[0-9]+/.exec(location.search));
$('li:nth-child('+elementID+')', 'ul#ulID').prependTo('ul#ulID');
你也可以这样做:
elementID = /[0-9]+/.exec(/paramValue=[0-9]+/.exec(location.search));
$('ul#ulID').prepend($('li:nth-child('+elementID+')', 'ul#ulID')