首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jquery颠倒html中表列的顺序

如何使用jquery颠倒html中表列的顺序
EN

Stack Overflow用户
提问于 2018-09-25 18:52:02
回答 3查看 1.7K关注 0票数 0

我有一个有10列的html表(即1 2 3 4 5 6 7 8 9 10 ),我想使用Jquery...

我有下面的代码,但这个代码非常长,任何人可以提供简短的代码这..

代码语言:javascript
复制
$(function() {
    jQuery.each($("table tr"), function() { 
        $(this).children(":eq(9)").after($(this).children(":eq(0)"));
        $(this).children(":eq(8)").after($(this).children(":eq(0)"));
        $(this).children(":eq(7)").after($(this).children(":eq(0)"));
        $(this).children(":eq(6)").after($(this).children(":eq(0)"));
        $(this).children(":eq(5)").after($(this).children(":eq(0)"));
        $(this).children(":eq(4)").after($(this).children(":eq(0)"));
        $(this).children(":eq(3)").after($(this).children(":eq(0)"));
        $(this).children(":eq(2)").after($(this).children(":eq(0)"));
        $(this).children(":eq(1)").after($(this).children(":eq(0)"));
    });
});
EN

回答 3

Stack Overflow用户

发布于 2018-09-25 18:55:55

要实现这一点,您可以从每一行中的td元素构建一个数组,对其执行reverse()操作,然后再将其追加回来:

代码语言:javascript
复制
$('table tr').each(function() {
  var tds = $(this).children('td').get().reverse();
  $(this).append(tds);
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>

票数 5
EN

Stack Overflow用户

发布于 2018-09-25 19:12:41

循环通过td并在循环中使用.prepend()在父元素的第一个中插入元素。

代码语言:javascript
复制
$("table td").each(function() { 
  $(this).parent().prepend(this);
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>

更新:

@NoumanSaeed:有11列(即1 2 3 4 5 6 7 8 9 10标题)的超文本标记语言表格,我想水平翻转列(即10 9 8 7 6 5 4 3 2 1标题)

在这种情况下,您应该使用:lt()在选择器中排除包含header最后一个td

代码语言:javascript
复制
$("table td:lt(10)").each(function() { 
    $(this).parent().prepend(this);
});

代码语言:javascript
复制
$("table td:lt(10)").each(function() { 
  $(this).parent().prepend(this);
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>10</td>
    <td>Header</td>
  </tr>
</table>

票数 2
EN

Stack Overflow用户

发布于 2018-09-25 19:37:25

上面的答案是正确的,但您也可以使用css。

NOTE解决方案不适用于带分页的表格,但是如果数据很短(只有一页),您可以尝试一下!

代码语言:javascript
复制
if($("html").attr("dir") == "rtl") {
  $("table").css({"direction": "ltr"});
}else{
  $("table").css({"direction": "rtl"});
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52496431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档