2014-10-29 56 views
0

我將UL從一個元素克隆到另一個元素,就像這樣。結合克隆的UL菜單

$("#mobMenu li a").each(function(index) { 

    var subID = $(this).attr('id') 

     if (typeof(subID) !== "undefined") { 
      subID = "#sub_" + subID + " .subnav-menu" 
      var subMenu = $(subID).clone(); 
      $(this).parent().append(subMenu); 
    } 
}); 

菜單我克隆:

<div id="sub_cat3"> 

<ul id="sub_cat" class="subnav-menu"> 
    <li>..</li> 
</ul> 

<ul class="subnav-menu"> 
    <li>..</li> 
</ul> 

</div> 

到一個新的移動菜單,看起來像這樣:

<ul id="mobMenu"> 
    <li><a id="cat3"></a> 
// cloned menu to go here 
</li> 
</ul> 

所以浩,我可以每個克隆UL合併成一個UL?

<ul class="subnav-menu"> 
<li>..</li> 
<li>..</li> 
</ul> 
+2

樣本HTML將幫助了很多(也許在一個SO片斷或一的jsfiddle?) – 2014-10-29 15:12:05

+0

更清晰的HTML – user1059511 2014-10-29 15:39:58

+0

回答以下更新使用新的HTML(無需更改代碼)更新:http://jsfiddle.net/TrueBlueAussie/b10n5mf0/2幸運的是,我猜對了你的結構:) – 2014-10-29 15:41:26

回答

1

認爲你想是這樣的(不得不圖謀的HTML作爲合適的示例沒有提供):

JSFiddle:http://jsfiddle.net/TrueBlueAussie/b10n5mf0/1/

或與您的新的HTML:http://jsfiddle.net/TrueBlueAussie/b10n5mf0/4/

$("#mobMenu li a").each(function (index) { 
    var subID = $(this).attr('id') 
    console.log(subID); 
    if (subID) { 
     subID = "#sub_" + subID + " .subnav-menu li" 
     var $div = $('<ul>').append($(subID).clone()); 
     $(this).closest('li').append($div); 
    } 
}); 

注:

  • 它爲每個匹配組列表LIS的創建單個UL。
  • 只克隆匹配的LI,然後在創建的UL下插入append
  • if (typeof(subID) !== "undefined")可以用if (subID)替換爲attr返回一個字符串或未定義的(並且空字符串被視爲您的代碼未定義)。
+0

很明顯,調用一個'UL'變量'$ div'是一個錯誤(習慣追加divs)。 'var $ ul'會更好:) – 2014-10-29 15:43:21

+0

很好用,謝謝。 – user1059511 2014-10-29 15:50:06

+0

我如何克隆而不是通過html插入? – user1059511 2014-10-29 15:56:38

0

你可以做...

var $subs = $('.subnav-menu'), 
    $lis = $subs.find('> li').clone(); 

// Add all the $lis to the first subnav... 
$subs.eq(0).append($lis); 

// Remove the rest of the subs... 
$subs.slice(1).remove(); 

這裏是一個小的演示:http://jsbin.com/jerapo/2/edit?js,output

+0

我更新了一下。 – 2014-10-29 15:23:37

+1

現在我只是困惑。 – 2014-10-29 15:24:45