2013-03-03 55 views
0

單擊任何位置時隱藏函數可以工作我正在設計一些選擇帶有無序()HTML列表的元素,當用戶單擊元素區域外的任何地方時,該函數應該隱藏這些元素,但由於某些原因,當用戶單擊使用jQuery UI MultiSelect Widget的元素時,它不起作用。當隱藏文檔中的任何地方,除了使用jQuery UI MultiSelect Widget

UPDATE - 我創建了一個的jsfiddle來演示該問題http://jsfiddle.net/chayacooper/ezxSF/4/點擊打開標記的項目「UL元素」 - 如果你要麼將鼠標放置任何下拉項爲「UL元素」或點擊該文檔或其他元素的工作方式與預期的一樣,但如果您單擊'多選元素'而不是將鼠標懸停在任何'UL元素'項目上,它仍然會打開。

$('html').click(function(e){ 
    if(e.target.id == 'dropdown_box1') { 
      $("#select1").show(); 
    } else { 
      $("#select1").hide(); 
    } 
}); 

我也試着創建一個單獨的函數來關閉那個元素,如果用戶點擊一個多重選擇元素,但那也不管用。

$('.multiselect').click(function() { 
    $("#select1").hide(); 
});  

HTML

<div id="dropdown_box1"><span>Select</span></div> 
<div class="dropdown_container" id="dropdown_container1"> 
    <ul id="select1"> 
     <!-- Several List Item Elements --> 
    </ul> 
</div> 

我有一個隱藏列表元素,當用戶將鼠標關閉它,但如果用戶點擊打開它,但沒有按不激發一個單獨的鼠標離開功能鼠標懸停在列表元素上。

$(document).ready(function() { 
     $("#dropdown_box1").click(function() { 
      $("#select1").show(); 
     }); 
     var timeoutID; 
     $("#select1").mouseleave(function() { 
       timeoutID = setTimeout(function() { 
        $("#select1").hide(); 
      }, 800); 
     }); 
      $("#select1").mouseenter(function() { 
      clearTimeout(timeoutID); 
     }); 
    }); 

回答

1

您是否嘗試過使用.blur()來隱藏列表?你可以嘗試:

$("#select1").blur(function(){ 
    $(this).hide(); 
}); 

我以前沒使用多選插件,和我沒有測試這一點,但我認爲檢查項目時失去焦點是更好的,在添加事件到每一個項目,檢查何時被點擊。希望有所幫助。

更新: Multiselect在打開時發生了一個事件。如果你看看這個JSFiddle,我已經關閉了另一個選擇:http://jsfiddle.net/k8DWK/

+0

我試過了,但不幸的是,這並沒有關閉帶有選項的元素 – 2013-03-03 16:25:58

+0

你有沒有[JSFiddle](http://www.jsfiddle.com)示例,我可以看到?可能更容易以這種方式進行調試。 – 2013-03-03 16:45:57

+0

我剛剛創建了一個:-) http://jsfiddle.net/chayacooper/ezxSF/4/要查看問題的實際情況,請單擊以打開標記爲「UL元素」的項目,然後單擊「多選元素」(不含將鼠標懸停在「UL元素」中的任何項目上)。如果你點擊文檔或其他元素,你會發現它按預期工作 – 2013-03-03 18:00:49

相關問題