2016-09-14 105 views
1
  • 鑑於:一個簡單的標題與導航元素。
  • 當:用戶將鼠標懸停在標題導航元素和迷你彈出窗口出現
  • 然後:用戶必須點擊的元素顯示在彈出

下面的代碼爲懸停的偉大工程,但我希望迷你彈出窗口在點擊時顯示,而不是懸停。當我改變.hover到.click什麼都沒有發生。改變懸停點擊標題導航彈出菜單

任何想法?

JQuery的

jQuery(document).ready(function() { 
function displayFlyout(main_id, content_id) { 
    jQuery(main_id).hover(function() { 
      jQuery(content_id).stop(true, true).slideDown('fast'); 
      jQuery(this).addClass("fly-dropdown"); 
     }, 
     function() { 
      jQuery(content_id).stop(true, true).slideUp(200); 
      jQuery(this).removeClass("fly-dropdown"); 
     } 
    ); 
} 

displayFlyout("#example_one", "#example_one_content"); 
displayFlyout("#example_two", "#example_two_content"); 
displayFlyout("#example_three", "#example_three_content"); 
}); 

HTML(僅一個彈出按鈕的例子)

<ul class="header_flyout col-md-10 pull-right"> 
     <li class="contact_us"> 
      <div id="example_one" class="no-dropdown"> 
       <span class="menu"><?php echo $this->__('Example'); ?></span> 
       <div class="header-dropdown-content" id="example_one_content"> 
        <span class="blue-arrow">&nbsp;</span> 
        <?php echo $this->getChildHtml('contact_mini'); ?> 
       </div> 
      </div> 
     </li> 
     <li>.....</li> (example two) 
     <li>.....</li> (example three) 
    </ul> 

回答

0

的問題是該.hover()方法接受兩個參數,from the docs

.hover(handlerIn, handlerOut) 

在另一方面.click()函數只接受一個參數,你可以做的是聽文檔上的click事件,如果它擊中目標你想您激活下拉列表中,否則你會隱藏下拉,就像這樣:

jQuery(document).ready(function() { 
    function displayFlyout(main_id, content_id) { 
    jQuery(document).click(function (ev) {  
     if (jQuery(ev.target).parent(main_id).is(jQuery(main_id))) { 
     jQuery(content_id).stop(true, true).slideDown('fast'); 
     jQuery(this).addClass("fly-dropdown");  
     } else { 
     jQuery(content_id).stop(true, true).slideUp(200); 
     jQuery(this).removeClass("fly-dropdown"); 
     } 
    }); 
    } 

    displayFlyout("#example_one", "#example_one_content"); 
}); 

你也可以檢查出這jsFiddle

希望它有幫助, 乾杯。

編輯:使用此解決方案勁歌了點擊的目標將是<span class="menu">Example</span>這就是爲什麼我用.parent()功能向上遍歷DOM來找到你打算綁定元素記住taht。

+0

哇,謝謝@Lucas Lazaro這很好。我是否需要在else語句中添加更多內容,以便能夠在任何地方點擊以關閉彈出窗口,或者這會有所不同?一些布爾邏輯可能?目前,您必須點擊content_id才能關閉彈出窗口。謝謝 – HawortDe

+0

@HawortDe不用擔心!嗯...在我的小提琴上它似乎工作得很好,點擊畫布上的任何位置都會關閉彈出窗口,您預覽哪個瀏覽器? –

+0

我在使用Chrome的本地Magento環境中。然而,你的小提琴正是我所尋找的,我的飛出的反應完全相反。現在測試任何衝突。 – HawortDe