How to change order of html tag by using jquery
我想使用jquery执行下面的步骤。有人知道很好的解决办法吗?
获取"ul"元素的dom对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <ul id="rows"> <li class="row1"> 2011/11/16 </li> <li class="row2"> 2011/11/15 </li> <li class="row3"> 2011/12/21 </li> <li class="row4"> 2011/12/05 </li> </ul> |
找到"li"元素,其中"a"元素的内容等于"2011/12/21"。(这是"row3"li元素。)
把"里"元素移到头上。(也见贝娄代码)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <ul id="rows"> <li class="row3"> 2011/12/21 </li> <li class="row1"> 2011/11/16 </li> <li class="row2"> 2011/11/15 </li> <li class="row4"> 2011/12/05 </li> </ul> |
我已经知道如何得到这样的"ul"元素的dom对象。
1 | $("#rows").get(0) |
但我不知道第二步和第三步。所以,我想请教专家。
这将选择文本为"2011/12/21"的
1 | $('#rows a:contains("2011/12/21")').parent().prependTo('#rows'); |
演示
1 2 3 4 5 | $("#rows li").filter(function() { // trimming is needed in this case, it seems return $.trim($(this).text()) ==="2011/12/21"; }).prependTo("#rows"); |
演示。
1 | $("#rows li a").filter(function(){return $(this).text()=='2011/12/21'}) |
这将选择所需的值,将其移动到所需的任何位置。
如果您希望根据日期进行更多排序,而不仅仅是根据您描述的单个元素的内容进行排序,那么您可能希望使用类似于此的元素排序插件:
http://james.padolsey.com/javascript/sorting-elements-with-jquery/
它将像这样工作(未测试):
1 2 3 4 5 6 | $('li').sortElements(function(a, b){ var dateA = parseInt($(a).find('a').text().replace('/', ''), 10); var dateB = parseInt($(b).find('a').text().replace('/', ''), 10); return dateA <= dateB ? -1 : 1; // you might want to switch this one }); |
您可以使用如下内容:
1 | $("#rows li a:contains('2011/12/21')").parent().prependTo("#rows"); |
这将使用选择器查找包含所需文本的
你可以在这里看到一个演示作品:http://jsfiddle.net/jfriend00/7mrxs/