1

ul リストから選択した opt グループを生成し、それを置き換えるスクリプトがあります。関数を変更して、選択リストを生成するが、ul リストを置き換えないようにしたいと考えています。UL は次のとおりです。

<ul id="sitemap">
    <li><a href="www.google.com">Home</a></li>
    <li><a href="www.google.com">Small Business</a>
        <ul>
            <li><a href="www.google.com">Laptops</a></li>
            <li><a href="www.google.com">Workstations</a></li>
            <li><a href="www.google.com">Workstations</a></li>
            <li><a href="www.google.com">Printers</a></li>
            <li><a href="www.google.com">Mobile Phones</a></li>
        </ul>
    </li>
    <li><a href="www.google.com">Public Sector</a>
        <ul>
            <li><a href="www.google.com">State Government</a></li>
            <li><a href="www.google.com">Federal Government</a></li>
            <li><a href="www.google.com">Support and Drivers</a></li>
        </ul>
    </li>
    <li><a href="www.google.com">Large Enterprise</a>
        <ul>
            <li><a href="www.google.com">Services</a></li>
            <li><a href="www.google.com">Solutions</a></li>
        </ul>
    </li>
</ul> 

そしてJS:

function sitemapCycle(){
    if(typeof(sitemapNode)==="undefined") sitemapNode= $("#sitemap");
    if($(this).find("ul").length)
    {
        sitemapNode= $(sitemapNode).append('<optgroup label="'+$(this).children().first().text()+'" />').children().last();
        $(this).find("ul li").each(sitemapCycle);
        sitemapNode= $(sitemapNode).parent();
    }
    else
    {
         $(sitemapNode).append('<option value="'+$(this).children().attr("href")+'">'+$(this).text()+'</option>');
    }
}

var sitemapNode;

$("#sitemap").removeAttr("id").after('<select id="sitemap" />').children().each(sitemapCycle).parent().remove();​

私はjsの経験があまりありませんが、削除することを考えました

var sitemapNode;

$("#sitemap").removeAttr("id").after('<select id="sitemap" />').children().each(sitemapCycle).parent().remove();​

トリックを行いますが、そうではありません。これが実際の例です: http://jsfiddle.net/XvruF/

4

1 に答える 1

3

最後の行を次のように変更します。

$("#sitemap").removeAttr("id").after('<select id="sitemap" />').children().each(sitemapCycle);​
于 2012-11-30T15:39:06.313 に答える