jQuery 随机排列表格行

发布于 2024-12-07 07:14:31 字数 414 浏览 0 评论 0原文

我得到了一个包含三列的表格:

1 A A
2 乙乙
3 C C
4 D D

我想要做的是打乱表格行,但只打乱第二列和第三列,如下面的示例

1 C C
2 A A
3D
4 B B

我发现了一个漂亮的插件,可以让表行被打乱
http://www.yelotofu.com/2008/08/jquery-shuffle -plugin/

但我想保留第一列的默认顺序。 我要么在洗牌后重新排序第一列,要么只是洗牌 第二列和第三列。不管怎样,有人可以帮我解决这个问题吗?

I got a table with three columns:

1 A A
2 B B
3 C C
4 D D

What I want to do is to shuffle the table rows but only the second and third column, like the example below

1 C C
2 A A
3 D D
4 B B

I found a nifty plugin wich lets the table rows to be shuffled
http://www.yelotofu.com/2008/08/jquery-shuffle-plugin/

but I want to keep the first column in it's default order.
Either I will reorder the first column after shuffling or I just shuffle
the second and third column. Either way can somebody help me out with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逆蝶 2024-12-14 07:14:31

小提琴: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()

Fiddle: http://jsfiddle.net/tGY3g/

Here you go:

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

Usage

$("table").shuffleRows()
半枫 2024-12-14 07:14:31

为了确保只有特定的表 tbody 被打乱,请在 JS 中使用 ID 来标识受影响的表:

/* Shuffle the table row, identify by id ---- */
$('#shuffle').shuffleRows();

在 HTML 中,使用这些:

<table id="shuffle">
 <thead>...</thead>
 <tbody>
  <tr>....</tr>
  <tr>....</tr>
  <tr>....</tr>
 </tbody>
</table>

以便只打乱 thead 中的行。

To make sure only the specific table tbody is shuffled, use an ID to identify the affected table, in your JS:

/* Shuffle the table row, identify by id ---- */
$('#shuffle').shuffleRows();

In your HTML, use these:

<table id="shuffle">
 <thead>...</thead>
 <tbody>
  <tr>....</tr>
  <tr>....</tr>
  <tr>....</tr>
 </tbody>
</table>

so that only row in thead is shuffled.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文