2013-05-20 52 views
2

我是jQuery的初学者。我创建了自己的下拉列表中,而问题是,当我创建e.preventDefault();它适用于孩子太下拉,我想避免jQuery e.prevent默认适用于儿童li

HTML

<div id="wrapper" class="container"> 
    <nav> 
     <ul> 
      <li><a href="">ABOUT PGP</a></li> 
      <li class="parent"><a href="#">SERVICES</a> 
       <ul class="sub-menu"> 
        <li><a href="">Overview</a></li> 
        <li><a href="">Industry Expertise</a></li> 
        <li><a href="">Cross-Cultural Expertise</a></li> 
        <li><a href="">Value Proposation</a></li> 
       </ul> 
      </li> 
      <li class="parent"><a href="">TRANSACTIONAL EXPERIENCE</a> 
       <ul class="sub-menu"> 
        <li><a href="">Select Transactions</a></li> 
        <li><a href="">Prior Transactions</a></li> 
       </ul> 
      </li> 
      <li class="parent"><a href="#">TEAM</a> 
       <ul class="sub-menu"> 
        <li><a href="index.html">Professionals</a></li> 
        <li><a href="">Board of Directors</a></li> 
        <li><a href="">Advisory Board</a></li> 
       </ul> 
      </li> 
      <li class="parent"><a href="">MEDIA</a> 
       <ul class="sub-menu"> 
        <li><a href="" class="long">PGP Press Releases & Announcements</a></li> 
        <li><a href="" class="long">PGP In The Newss</a></li> 
       </ul> 
      </li> 
      <li><a href="">STRATEGIC PARTNERS</a></li> 
      <li><a href="">CONTACT US</a></li> 
     </ul> 
    </nav> 
</div> 

jQuery的

<script> 
$(function(){ 
    $('li.parent').bind('click', function(e){ 
     e.preventDefault(); 

     $(this).children('ul.sub-menu').fadeIn(800); 
    }); 
}); 
</script> 

难道有人请给我一个暗示我做错了什么吗?

+0

你不能只用'$('li.parent> a')'吗?即。目标只包含在'父' – billyonecan

回答

5

对于父母,您只能使用preventDefault

$('.parent').bind('click', function(e){ 
    if(event.target.className === 'parent') 
     e.preventDefault();  
    $(this).children('ul.sub-menu').fadeIn(800); 
}); 
+0

谢谢,但我只想使用父母 –

+0

预防默认包含的锚检查我更新的答案。 – Adil

+0

感谢您的帮助:) –

0

查看event.target/event.originalTarget,查看生成事件的元素并进行相应的响应。

if (e.target.tagName === "LI" || e.target.tagName === "li") 
{ 
    e.preventDefault(); 
    $(this).children('ul.sub-menu').fadeIn(800); 
} 
1

你可以试试这个:

$('li.parent, li.parent > a').bind('click', function(e){ 
    e.preventDefault(); 
    $('ul.sub-menu', this).fadeIn(800); 
}); 

尝试获得直接子>和防止元素的默认操作。