使用jQuery将无序列表转换为表

men*_*mam 3 jquery html-lists css-tables

我喜欢得到<ul><li>一个很好的桌子,我会用CSS来设计.

我喜欢用jQuery进行的转换

* Place|Name|Earning
* 1|Paul|200$
* 2|Joe|400$
* 3|James|100$
* 4|Carl|1000$
Run Code Online (Sandbox Code Playgroud)

......等等......

<ul>表格单元格的第一行和其他表格制作一个表头...

<ul>页面上可能有4-5 秒.

要为蛋糕添加糖霜,请将其从最大的收入者分类到最小的收入者!


我发现了这个问题:

如何使用JQuery将HTML表转换为列表?

恰恰相反......但也许是一个好的开始?我不知道,我会检查出来......但仍然把问题广泛开放.


我发现了这个问题:

如何使用JQuery将HTML表转换为列表?

恰恰相反......但也许是一个好的开始?我不知道,我会检查出来......但仍然把问题广泛开放.


另一个与解决方案有关的问题......

如果我想"删除"并将其替换为表格..

我不想做一张空桌子..

这里是代码...也许不是"优化"但它起作用

$('#texte').append('<div id="where_my_table_goes"></div>');
$('#where_my_table_goes').append(table);
$('#my_oddly_formatted_list').remove();
Run Code Online (Sandbox Code Playgroud)

什么更好?


不,不,因为问题/答案变得很好,插件很棒......但是不再适用了......

这是错误...我喜欢在点击事件切换时调用插件(tablerize)并通过表替换整个UL ...它不做

这是一小段代码:

<script type="text/javascript">
    $(document).ready(function() {

        $('#texte > h1').next().hide(500);  
        $('#texte > h1').click(function() {
        $(this > ul).tablerize();
        $(this).toggle(500);
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这并不奇怪它不起作用..我确定了一些东西...而且我没有运气来调整插件!...

我真的很想保留这些代码:

$("texte").append('<div id="where_my_table_goes"></div>');
$(#where_my_table_goes"></div>').append(table);
$('#my_oddly_formatted_list').remove();
Run Code Online (Sandbox Code Playgroud)

可以成为:

remove the ul
append the div to (this)
put the table into that div
Run Code Online (Sandbox Code Playgroud)

我甚至需要一个div?

救命!


它不起作用; 这是完整的页面,也许它会帮助我们看看应该做些什么

http://www.acecrodeo.com/new/04-classement.php

我使用延迟隐藏只是为了看到数据在那里......

按下标题后...表格应该发生,删除旧的ul并用表格替换它,然后滑动它


好的..现在有州......

我知道只有编辑答案并发布它...没有任何更新按钮..

我想给你一个拇指或任何可以帮助你评价的东西...我只是不知道如何

对于这个问题...我已经发布了你给我的东西..而且它不起作用......让我们看看链接:http://www.acecrodeo.com/new/04-classement.php

这是错误:它切换标题...

我迷路了!

Pao*_*ino 10

这是你如何做到的,如果你有这样的HTML:

<ul id='my_oddly_formatted_list1' class='odd_list'>
    <li>Column A|Column B|Column C</li>
    <li>Value A1|Value B1|Value C1</li>
    <li>Value A2|Value B1|Value C2</li>
    <li>Value A3|Value B1|Value C3</li>
    <li>Value A4|Value B1|Value C4</li>
</ul>
<ul id='my_oddly_formatted_list2' class='odd_list'>
    <li>Column D|Column E|Column F</li>
    <li>Value D1|Value E1|Value F1</li>
    <li>Value D2|Value E1|Value F2</li>
    <li>Value D3|Value E1|Value F3</li>
    <li>Value D4|Value E1|Value F4</li>
</ul>
<ul id='my_oddly_formatted_list3' class='odd_list'>
    <li>Column G|Column H|Column I</li>
    <li>Value G1|Value H1|Value I1</li>
    <li>Value G2|Value H1|Value I2</li>
    <li>Value G3|Value H1|Value I3</li>
    <li>Value G4|Value H1|Value I4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

然后用jQuery你可以编写一个这样的插件:

jQuery.fn.tablerize = function() {
        return this.each(function() {
                var table = $('<table>');
                var tbody = $('<tbody>');
                $(this).find('li').each(function(i) {
                        var values = $(this).html().split('*');
                        if(i == 0) {
                                var thead = $('<thead>');
                                var tr = $('<tr>');
                                $.each(values, function(y) {
                                        tr.append($('<th>').html(values[y]));
                                });
                                table.append(thead.append(tr));
                        } else {
                           var tr = $('<tr>');
                           $.each(values, function(y) {
                                   tr.append($('<td>').html(values[y]));
                           });
                           tbody.append(tr);
                        }
                });
                $(this).after(table.append(tbody)).remove();
        });
};
Run Code Online (Sandbox Code Playgroud)

然后您可以通过以下任何方式调用它:

// tablerize all UL elements in the page
$('ul').tablerize();

// only UL elements with class 'odd_list'
$('ul.odd_list').tablerize();

// individually tablerize all the lists
$('#my_oddly_formatted_list1').tablerize();
$('#my_oddly_formatted_list2').tablerize();
$('#my_oddly_formatted_list3').tablerize();
Run Code Online (Sandbox Code Playgroud)

就排序等而言,有许多插件可用于将此功能提供给表.

**编辑**

代码的问题在于以下几行:

$(document).ready(function() {
    /*$('#texte > h1').next().hide(1000); */ 
    $('#texte > h1').click(function() {
        $(this).tablerize();
        /*$(this).next().toggle(500);*/
    });
});
Run Code Online (Sandbox Code Playgroud)

tablerize我写的插件需要一个<ul>元素来表示.当你通过它时,this你传递的h1是匹配的,而不是<ul>.如果您替换此行:

$(this).tablerize();
Run Code Online (Sandbox Code Playgroud)

使用此行,将在标题之后立即找到UL元素:

$(this).next('ul').tablerize();
Run Code Online (Sandbox Code Playgroud)

它应该按照你的意图工作.

也:

  • 要更新您的问题,只需点击"编辑"并添加您想要的任何内容.
  • 要接受答案,请单击此文本左侧的复选框.