5

HTMLテーブルをul要素liに変換したい。私のテーブル構造は

<table>
    <tbody>
        <tr>
            <th>1974</th>
            <td>UK</td>
        </tr>
        <tr>
                <th>1976</th>
            <td>Street</td>
        </tr>
        <tr>
            <th>1976-2002</th>
            <td>visitors.</td>
        </tr>

    </tbody> 
 </table>

これをに変換しようとしました

        <ul>
            <li>
                <p>1974</p>
                <p>UK</p>
            </li>
            <li>
                    <p>1976</p>
                <p>Street</p>
            </li>
            <li>
                <p>1976-2002</p>
                <p>visitors.</p>
            </li>

        </ul> 

以下の機能を使用jquery replaceWithします。ここでは、最初に<tbody>要素を変換します。

$(document).ready(function() {
    $("tbody").each(function(){
    var html = $(this).html();
    $(this).replaceWith("<ul>" + html + "</ul>");
    });
)};

しかし、これは肯定的な答えを与えるものではありません。誰もがこれを行う方法を知っています。

ありがとう。

4

5 に答える 5

10

私はこのようにします:

$(document).ready(function() {
    var ul = $("<ul>");
    $("table tr").each(function(){
        var li = $("<li>")
        $("th, td", this).each(function(){
            var p = $("<p>").html(this.innerHTML);
            li.append(p);
        });
        ul.append(li);
    })    
    $("table").replaceWith(ul);    
});

最初にULが作成され、テーブルよりもULに置き換えられます。

デモ: http: //jsfiddle.net/yXyCk/

于 2013-02-12T09:20:31.680 に答える
6

試す

$('table').replaceWith( $('table').html()
   .replace(/<tbody/gi, "<ul id='table'")
   .replace(/<tr/gi, "<li")
   .replace(/<\/tr>/gi, "</li>")
   .replace(/<td/gi, "<p")
   .replace(/<\/td>/gi, "</p>")
   .replace(/<th/gi, "<p")
   .replace(/<\/th>/gi, "</p>")
   .replace(/<\/tbody/gi, "<\/ul")
);

上記のコードはテストされ、私のために機能しました..
乾杯

于 2013-02-12T09:16:01.190 に答える
0

このコードを使用する

function convertToList(element) {
    var list = $("<ul/>");

    $(element).find("tr").each(function() {
        var p = $(this).children().map(function() {
            return "<p>" + $(this).html() + "</p>";
        });

        list.append("<li>" + $.makeArray(p).join("") + "</li>");
    });

    $(element).replaceWith(list);
}
于 2013-02-12T09:37:34.370 に答える
0

ここでの他の回答の問題は、テーブルをリストに変換するとすべてのスタイルが失われることです。これは私がそれを達成し、テーブルの外観を維持するために使用したものです:

function convert_table_to_list($table) {
    var $list = $("<ul></ul>");
    $list.css("list-style-type", "none");
    $list.css("padding", 0);

    $table.find("tr").each(function() {
        var $li = $("<li></li>");

        $li.height($(this).height());
        $(this).find("td").each(function() {
            var $div = $("<div></div>");

            // Add inline and external styling
            var style = css($(this));
            $div.css(style);

            // Add some browser default styles
            $div.css("display", "table-cell");
            $div.html($(this).html());
            $div.width($(this).width());
            $div.height($(this).height());
            $div.css("vertical-align", $(this).css("vertical-align"));
            $div.css("padding", $(this).css("padding"));

            // Add class(es)
            $div.addClass($(this).attr("class"));

            // Append to li
            $li.append($div);
        });
        // Append li to ul
        $list.append($li);
    });

    $list.insertAfter($table);
    $table.remove();

    return $list;
}

// The following are taken from http://stackoverflow.com/questions/754607/can-jquery-get-all-css-styles-associated-with-an-element
function css(a) {
    var sheets = document.styleSheets, o = {};
    for (var i in sheets) {
        var rules = sheets[i].rules || sheets[i].cssRules;
        for (var r in rules) {
            if (a.is(rules[r].selectorText)) {
                o = $.extend(o, css2json(rules[r].style), css2json(a.attr('style')));
            }
        }
    }
    return o;
}
function css2json(css) {
    var s = {};
    if (!css) return s;
    if (css instanceof CSSStyleDeclaration) {
        for (var i in css) {
            if ((css[i]).toLowerCase) {
                s[(css[i]).toLowerCase()] = (css[css[i]]);
            }
        }
    } else if (typeof css == "string") {
        css = css.split("; ");
        for (var i in css) {
            var l = css[i].split(": ");
            s[l[0].toLowerCase()] = (l[1]);
        }
    }
    return s;
}

JSFiddleでご覧ください

于 2014-06-28T18:44:58.107 に答える
-1

<table>構造メニュー<UL>をjQueryを使用するように変換する

速度/パフォーマンスを向上させるために、for代わりにループを使用しましたeach

   for(var i=0; i<$anchorTarget.length; i++){
            var $eachAnchor = $anchorTarget.eq(i);
            //get anchor markup from table
            var getAnchor = $eachAnchor.parent().html();
            //append anchor on created ul
            $("."+convertedMenuCls).append("<li>"+getAnchor+"</li>");
            //hide old icon - if you've icon as a image in old table markup
            $eachAnchor.parent().parent().find("img").hide();
            //Add new icon
            $eachAnchor.parent().parent().find("img").after("<span>+</span>");
        }

テーブル構造

ここに画像の説明を入力してください

変換後のUL構造 ここに画像の説明を入力してください

動作するコードは次のとおりです 。jQueryを使用してテーブル構造メニューをULに変換する

于 2016-12-29T06:31:23.273 に答える