簡単な質問: http://jsfiddle.net/wF4FH/2/ クラスを変更する前に、Page1 を Page2 のすぐ上に、Page10 を Page 20 のすぐ上に配置する必要があります。これは、任意の数の要素に対して機能するはずです。
提供されたコードは、「Uncaught TypeError: Object # has no method 'append'」を返します。
長い質問: 最初のリンクに基づいて li 要素を挿入する正しい方法を見つけるのに問題があります。問題は、マークアップでIDを使用できないため、各クラスを「ウォークスルー」して名前を確認する必要があることです。最初の 2 つの解決策が思ったように機能しなかったため、これを実際よりもはるかに複雑にする可能性があります。
html
<ul class="nav">
<li class="active">
<a href="/">Start</a>
</li>
<li class="has-child">
<a href="/page1">page1</a>
<ul class="">
<li>
<a href="/page1/page2">page2</a>
</li>
</ul>
</li>
<li class="has-child">
<a href="/page10">page10</a>
<ul class="">
<li>
<a href="/page10/page20">page20</a>
</li>
<li>
<a href="/page10/page30">page30</a>
</li>
</ul>
</li>
JavaScript
//Copy first link to child ul li
var pageLinks = $("li.has-child > a:first-child");
if (pageLinks != null) {
//var dropdownMenus = $("li.dropdown > a:first-child");
for (var i = 0; i < pageLinks.length; i++) {
for (var x = 0; x < pageLinks.length; x++) {
if (pageLinks[i].innerHTML === pageLinks[x].innerHTML) {
pageLinks[x].childNodes.append(pageLinks[i]);
}
}
}
}
//Change css classes
$("li.has-child").attr('class', 'dropdown');
$(".dropdown ul").addClass("dropdown-menu");
$(".dropdown a").attr("href", "#").addClass("dropdown-toggle").attr('data-toggle', 'dropdown');
strong text クラスを変更する前に、Page1 を Page2 のすぐ上に、Page10 を Page 20 のすぐ上に配置する必要があります。これは、任意の数の要素に対して機能するはずです。
それらが内部 ul にコピーされたら、最上位のメニュー項目を別のクラスに変更して、クリック可能なドロップダウン メニュー項目として機能させます。
提供されたコードは、「Uncaught TypeError: Object # has no method 'append'」を返します。
マークアップを変更できないCMSのナビゲーションです。