我正在使用this question中的函數來使用jQuery對錶中的行進行整理。我真正想要的是僅洗牌的第一列,剩下的也不放過,這樣的:我怎樣才能洗牌一張桌子的第一列?
a b c d
e f g h
i j
要這樣:
e b c d
i f g h
a j
在Rob W's answer的功能是:
(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)
但這與我想要的相反 - 它將所有行洗牌但第一欄。我怎樣才能改變這個讓它洗牌只有第一列?
謝謝!順便說一句,我不明白[]做什麼? –
回答更新了爲什麼'[] .sort.call($ copies,...)'對'$ copies' jQuery對象進行排序的簡要解釋。 (另外,如果你想得到的答案是你所鏈接的代碼的修改版本,但是這段代碼看起來太長而且很複雜,因爲我認爲它應該是一個相當簡單的操作,所以我忽略了它。) – nnnnnn