2014-06-11 23 views
0

我想創建一個子菜單項。一切都很好,除了沒有任何子項目的主要項目應該打開自己的鏈接。jQuery點擊主菜單項,如果有子切換子菜單,其他打開鏈接

眼下切換工作像它應該,但是當我點擊的主要項目沒有任何子項目,他們沒有做任何事情..

這是HTML:

<div class="menu-primary" style="display: block;"> 
     <ul class="v-list" id="menu-menu-1"> 
      <li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-23" id="menu-item-23"><a href="somepath.php">Browse by Type</a></li> 

      <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-30" id="menu-item-30"> 
       <a>aaaa</a> 

       <ul class="sub-menu"> 
        <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21" id="menu-item-21"><a href="somepath.php">Browse by Author</a></li> 
       </ul> 
      </li> 

      <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22" id="menu-item-22"><a href="somepath.php">Browse by Country</a></li> 

      <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20" id="menu-item-20"><a href="somepath.php">About</a></li> 
     </ul> 
    </div> 

這是jQuery代碼:

$('.menu-item').click(function(event) { 
    if($(this).closest("li.menu-item").children("ul.sub-menu").length) 
     { 
      $('.sub-menu').slideToggle('fast'); 
     } 
     else { 
      var url = $(this).closest("li.menu-item").attr('href'); 
      window.open(url); 
     } 
     return false; 
    }); 
+1

http://jsfiddle.net/DcG5R/作品..? – Bhavik

+0

得到它的工作,謝謝:) –

回答

2

移動return: false;應該這樣做,然後靠錨的默認行爲着手,改變在該target錨。 fiddle

$('.menu-item').click(function(event) { 
    if($(this).closest("li.menu-item").children("ul.sub-menu").length > 0) 
    { 
     $('.sub-menu').slideToggle('fast'); 
     return false; 
    }    
}); 
+1

它的工作,謝謝:) –

1

您的代碼有幾個問題。

首先,您的選擇器$('.menu-item')已經選擇了<li>元素,所以調用$(this).closest('li.menu-item')是多餘的; $(this)匹配完全相同的元素 - 您可以從代碼中刪除所有對.closest()的調用。

其次,href屬性是<a>元素,而不是<li>元素,你目前正試圖從得到它。更改該行:

var url = $(this).find("a").attr('href'); 
+0

感謝您的提示,我改進了代碼,它現在的作品,謝謝:) –

相關問題