jQuery shuffle表行
我有一个有三列的表:
1 AA
2 BB
3 CC
4 DD
我想要做的是洗牌表行但只有第二和第三列,如下例所示
1 CC
2 AA
3 DD
4 BB
我发现了一个漂亮的插件,可以让桌子行被洗牌
http://www.yelotofu.com/2008/08/jquery-shuffle-plugin/
但我想保留第一列的默认顺序。 我要么在洗牌后重新排序第一列,要么只是洗牌第二和第三列。 无论哪种方式,有人可以帮我解决这个问题吗?
小提琴: http : //jsfiddle.net/tGY3g/
干得好:
(function($){ //Shuffle all rows, while keeping the first column //Requires: Shuffle $.fn.shuffleRows = function(){ return this.each(function(){ var main = $(/table/i.test(this.tagName) ? this.tBodies[0] : this); var firstElem = [], counter=0; main.children().each(function(){ firstElem.push(this.firstChild); }); main.shuffle(); main.children().each(function(){ this.insertBefore(firstElem[counter++], this.firstChild); }); }); } /* Shuffle is required */ $.fn.shuffle = function() { return this.each(function(){ var items = $(this).children(); return (items.length) ? $(this).html($.shuffle(items)) : this; }); } $.shuffle = function(arr) { for( var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x ); return arr; } })(jQuery)
用法
$("table").shuffleRows()
要确保只对特定的表tbody进行洗牌,请在JS中使用ID来标识受影响的表:
/* Shuffle the table row, identify by id ---- */ $('#shuffle').shuffleRows();
在您的HTML中,使用以下代码:
... .... .... ....
所以只有thead中的行被洗牌。