2013-07-26 43 views
0

短的问题: http://jsfiddle.net/wF4FH/2/ 我想要的是第1页是正确的上述第2页和第10页以上的第20页之前,我改变类。这应该适用于任何数量的元素。jQuery来第一个链接复制到第二UL,然后更改类第一个链接的

提供的代码给出了“Uncaught TypeError:Object#has no method'append'”。

长问题: 我有问题找到正确的方法来插入li元素基于第一个链接。问题是我不能在我的标记上使用id,所以我必须“遍历”每个类并检查名称。我可能会让这个过程比现在复杂得多,因为我的前两个解决方案不像我认为的那样工作。

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'); 

强大的文本 我想要的是第1页是正确的上述第2页和第10页以上的第20页之前,我改变类。这应该适用于任何数量的元素。

当它们被复制到内部ul时,我将顶层菜单项更改为不同的类以用作可点击下拉菜单项。

提供的代码给出了“Uncaught TypeError:Object#has no method'append'”。

这是一个cms的导航我不能改变标记。

回答

0

试试这个:

$links = $('li.has-child').children('a:first-child'); 
if($links.length > 0){ 
    $links.each(function(i,link){ 
     $(link).next().prepend($('<li></li>').append($(link))) 
    }) 
} 

http://jsfiddle.net/wF4FH/6/

你需要.clone()方法复制的元素..

修订

$links = $('li.has-child').children('a:first-child'); 
if($links.length > 0){ 
    $links.each(function(i,link){ 
     $(link).next().prepend($('<li></li>').append($(link).clone())) 
    }) 
} 

http://jsfiddle.net/wF4FH/7/

+0

不错,但它移动它而不是复制它。第一个链接将是重复的,表明它保存的子菜单的区域。我需要将它链接到子菜单中的描述页面。它模仿bootstrap。有点像这样,但它会在子菜单和可点击菜单中说“Verksamhet”。 http://bindab.se/ –

+0

查看上面更新的代码。 – lashab

+0

不错!谢谢!作为奖励,我将如何在克隆下放置一条线?就像这里的菜单项“预览”,然后默认链接? –

0

当你有一个jQuery对象,并且你可以通过数字索引来访问它时,你只剩下一个HTML元素。所以$('body')[0] == document.body。这意味着当你访问pageLinks[x]时,你确实得到了一个原始元素。这意味着你要pageLinks[x].appendChild(pageLinks[i]);,不pageLinks[x].childNodes.append(pageLinks[i]);

+0

它给出未捕获的错误:HierarchyRequestError:DOM异常3 –

相关问题