Jquery 克隆每个类到下一个类的最近跨度 演示: 问题:
我想克隆Jquery 克隆每个类到下一个类的最近跨度 演示: 问题:,jquery,Jquery,我想克隆ul.waSlideMenu菜单上方(最近的?)的li.has-children span,然后在ul.waSlideMenu菜单内,第一个孩子有一个类li.waSlideMenu回来,这就是我想要克隆的地方。现在我所能做的就是克隆它们中的每一个,然后把它们放进这个区域。我在这方面很差劲 错误: <ul class="waSlideMenu-menu waSlideMenu-inheritedmenu"> <li class="waS
ul.waSlideMenu菜单上方(最近的?)的li.has-children span
,然后在ul.waSlideMenu菜单内,第一个孩子有一个类li.waSlideMenu回来
,这就是我想要克隆的地方。现在我所能做的就是克隆它们中的每一个,然后把它们放进这个区域。我在这方面很差劲
错误:
<ul class="waSlideMenu-menu waSlideMenu-inheritedmenu">
<li class="waSlideMenu-back"><a href="#">Up / <span>About Us</span><span>About Us Child</span><span>Oahu<span></span></span><span></span><span>Australia</span><span>California</span><span>Indian Ocean</span><span>Indonesia</span><span>Atlantic Ocean</span><span>Europe</span><span>South Africa</span><span>Canary Islands</span></a></li>
我这里有一个脚本:
$('.waSlideMenu-menu').closest('.has-children').find('span').clone().appendTo($('.waSlideMenu-back').children());
它所做的是克隆所有跨度,并将它们全部放回.waslide菜单中。下面是生成的这个混乱的html:
错误:
<ul class="waSlideMenu-menu waSlideMenu-inheritedmenu">
<li class="waSlideMenu-back"><a href="#">Up / <span>About Us</span><span>About Us Child</span><span>Oahu<span></span></span><span></span><span>Australia</span><span>California</span><span>Indian Ocean</span><span>Indonesia</span><span>Atlantic Ocean</span><span>Europe</span><span>South Africa</span><span>Canary Islands</span></a></li>
我想要的是:
<ul class="waSlideMenu-menu waSlideMenu-inheritedmenu">
<li class="waSlideMenu-back">
<a href="#">
Up / <span>The text of the Span inside the previous .has-children</span>
</a>
</li>
-
虽然您的HTML在语义上不正确,但我已经在li
的第一个子项上添加了父类别名称。那是你要找的吗
我尝试了更干净的方法(与演示不同),它对类选择器的依赖性更小。它会更快
var menu = $('#nav ul');
$('a', menu).on('click', function(){
var clickedText = $(this).find('span').text();
var parentDirAnchor = $(this).next('ul').children().first().find('a');
/*
one can use either of below approach, dont know which is faster ?
$(this).next('ul').children(':first-child').find('a');
$(this).siblings('ul').children('li:first').children('a');
*/
parentDirAnchor.html(' Up / <b>' + clickedText + '</b>');
var菜单=$('#nav ul');
$('a',菜单)。在('click',function()上{
var clickedText=$(this.find('span').text();
var parentDirAnchor=$(this).next('ul').children().first().find('a');
/*
一个人可以使用下面的方法之一,不知道哪个更快?
$(this).next('ul').children(':first child').find('a');
$(this).兄弟姐妹('ul')。子女('li:first')。子女('a');
*/
parentDirAnchor.html('Up/'+clickedText+'');
}))
有点困惑。在演示中,没有具有ul
的类,并且问题的错误部分中存在无效标记。两个相邻的跨度正在闭合。请重新检查问题ul.waSlideMenu-menu,而不是ul类。错误的部分是错误的,这是错误的一部分。ThanksI做了,但是因为它在元素之前,所以它就像一个父元素,但它是父元素之前的子元素。查看问题中的垃圾箱,单击一些东西,您将看到我正在尝试做什么您在父级和子级ul中有waslide菜单
。你能在JSFIDLE上做一份干净的ul li菜单吗?是的,在你8小时前给我发邮件后我睡着了。非常非常感谢你,就是这样。非常非常感谢!