jquery根据url参数重新排序<li> </li>

时间:2012-03-22 17:51:05

标签: jquery url reorderlist

我想根据网址中的参数重新排序我的商品列表。

这是我的清单:

<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>

任何提示??

4 个答案:

答案 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');

http://jsfiddle.net/iambriansreed/DDAvY/4/

答案 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')