如何在菜单上定位所有第一个孩子

时间:2016-11-21 09:52:14

标签: jquery wordpress

我只想在我的.sub-menu类中定位所有第一个Li元素并应用span元素(插入符号)。我实现了它,但不是我想要的,插入符号类出现在子菜单中的所有li元素上,我尝试了很多脚本的组合,没有任何效果。如果我使用.first()它只出现在子菜单中不包含一个子元素的li元素上。所以如果你有1个li元素要删除,它就会赢得' t出现在它上面...对于那个头脑风暴我很希望你能理解我。This就是mu菜单现在的样子。用这段代码:



$('.menu-new ul li:has(sub-menu)')
$('ul.sub-menu').parent('li').append('<span class=pc-caret></span');
&#13;
<div class="menu-new">
  <nav class="menu" role="navigation">
    <ul class="menu ul">
       <span class="pc-caret"></span>
         <?php wp_nav_menu(array (
           'theme_location'=> 'new-menu',
			'container' => '', 
			'items_wrap' => '%3$s' 
                                      )); ?>
                                   </ul>
                                 </nav>
                              </div>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

你可以使用CSS,不需要jQuery。

ul.sub-menu li:first-child{
  /* Insert your Caret Styles here, instead of the span*/
}

答案 1 :(得分:1)

试试这个,你应该找到子菜单的第一个li并检查它是否是第一个?  使用:eq(n)其中n是你的索引。索引从0开始。

 //as you have more than one ul with sub-menu class this should work for you
 $('ul.sub-menu').each(function(){

         $(this).find('li'):eq(0).append('<span class=pc-caret></span');

 });

答案 2 :(得分:1)

试试这个......

&#13;
&#13;
/*
$('ul.sub-menu').each(function(i, elmt){
  $('li:eq(0)', elmt).append('<span class="pc-caret">span</span>');
});
*/

//$('ul.sub-menu').eq(0).prepend('<span class="pc-caret">span</span>');

$('ul.sub-menu').each(function(i, elmt){
  $(elmt).prepend('<span class="pc-caret">span</span>');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="sub-menu">
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
</ul>
<ul class="sub-menu">
  <li>item 11</li>
  <li>item 21</li>
  <li>item 31</li>
</ul>
<ul class="sub-menu">
  <li>item 12</li>
</ul>
&#13;
&#13;
&#13;

答案 3 :(得分:-1)

var subclass = $('.menu-new ul li').attr('class');
if(subclass=='sub-menu'){
$(".sub-menu ul li:first-child").append('<span class=pc-caret></span');
}