我有一個顯示DIV的JavaScript(將它的display css屬性從'none'設置爲'normal'。是否有辦法讓它聚焦以及當我點擊頁面上的其他地方,該DIV失去焦點的顯示屬性設置爲none(基本上躲在它)我使用JavaScript和jQuery當它失去焦點時隱藏DIV /模糊
回答
對於隱藏點擊頁面上的任何地方時,除了selecteddiv
$(document).not("#selecteddiv").click(function() {
$('#selecteddiv').hide();
});
,如果你想隱藏與失去重心的股利或與動畫模糊,然後又
$("#selecteddiv").focusout(function() {
$('#selecteddiv').hide();
});
動畫
股利$("#selecteddiv").focusout(function() {
$('#selecteddiv').animate({
display:"none"
});
});
這可以幫到你
使用jQuery你可以隱藏要素與hide()
,例如:。$("#foo").hide()
隱藏事件偵聽器中的元素:
$("#foo").blur(function() {
$("#foo").hide();
});
有沒有模糊功能div – 2011-03-17 10:36:13
我個人還沒有嘗試模糊的div,只在輸入等。如果模糊eventhandler的作品,它是完美的,並使用它。如果沒有,你可以看看這個: jQuery animate when <div> loses focus
顯示很容易
$('somewhere').click(function {$('#foo').show();})
隱藏
可以在身體檢查的點擊綁定功能如果它的當前div使用e.target(e是事件)
$(document).ready(function() {
$("body").click(function(e) {
if($(e.target).attr('id') === "div-id") {
$("#div-id").show();
}
else {
$("#div-id").hide();
}
});
});
它不起作用。我在哪裏放置這個功能?只是在腳本標籤內? – code511788465541441 2011-03-17 10:46:58
它應該寫在身體加載後..已編輯我的答案。 – naiquevin 2011-03-17 11:17:58
@naiquevin他把它放在哪裏並不重要,因爲它被封裝在一個'$(document).ready'中,調用 – 2012-09-06 14:31:58
如果您的網站上有iframe,然後在iframe內單擊,那麼已經給出的例子不起作用。將活動附加到文檔只會將其附加到您的元素所在的文檔中。
您也可以將其附加到您正在使用的任何iframe,但大多數瀏覽器不會讓您在iframe從另一個域加載內容。
這樣做的最好方法是複製jQuery UI菜單欄插件中所做的操作。
基本例如HTML:
<div id="menu">Click here to show the menu
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li><a href="#">Item 3</a></li>
</ul>
</div>
而jQuery的需要,使其工作:
var timeKeeper;
$('#menu').click(function()
{
$('#menu ul').show();
});
$('#menu ul').click(function()
{
clearTimeout(timeKeeper);
});
$('#menu').focusout(function()
{
timeKeeper = setTimeout(function() {$('#menu ul').hide()}, 150);
});
$('#menu').attr('tabIndex', -1);
$('#menu ul').hide();
它所做的就是給菜單中的選項卡索引,使之能被認爲有重點。現在你已經完成了,你可以使用菜單上的focusout事件處理程序。無論什麼時候它被認爲失去焦點,它都會被觸發。不幸的是,點擊一些子元素將觸發聚焦事件(例如點擊鏈接),所以如果有任何子元素被點擊,我們需要禁用隱藏菜單。
因爲在任何孩子的點擊事件之前調用focusout事件,所以實現此目的的方法是在隱藏元素之前設置一個小超時,然後點擊任何子元素應該清除此超時,這意味着菜單不會隱藏。
關於鼠標點擊,看到其他的答案。
但是關於失去焦點,.focusout
不是要附加到的事件,而是.focusin
。爲什麼?考慮以下彈出:
<div class="popup">
<input type="text" name="t1">
<input type="text" name="t2">
</div>
上移動從T1到T2會發生什麼:
- T1發送
focusout
,其中氣泡高達$('.popup').focusout
- T2發送
focusin
,其中氣泡高達$('.popup').focusin
...因此即使焦點完全停留在彈出窗口內,您也可以獲得這兩種類型的事件。
的解決方案是類似於魔術與.click
完成:
$(document).ready(function() {
$('html').focusin(function() {
$('.popup').hide();
});
$('.popup').focusin(function(ev) {
ev.stopPropagation();
});
});
(邊注:我發現.not(...)
解決方案沒有工作BC事件冒泡的)。
獎金:工作小提琴click me - 打開彈出窗口,然後嘗試通過輸入標籤。
.focusin而不是.focusout?哇!所以反直覺,而且它既簡單又美觀。做得很好。 – LSpencer777 2014-04-18 13:15:16
$('.menu > li').click(function() {
$(this).children('ul').stop().slideDown('fast',function()
{
$(document).one('click',function()
{
$('.menu > li').children('ul').stop().slideUp('fast');
});
});
});
您能否闡述爲什麼您認爲這將解決OP的問題? – Jasper 2015-08-26 08:23:50
我也在尋找這個,在這裏我找到了解決方案https://api.jquery.com/mouseleave/。這可能對未來的讀者有用。
mouseleave事件與mouseout處理事件冒泡的方式不同。如果在此示例中使用了mouseout,那麼當鼠標指針移出Inner元素時,處理程序將被觸發。這通常是不受歡迎的行爲。另一方面,mouseleave事件只在鼠標離開綁定元素時觸發其處理程序,而不是後代。
$(document).mouseup(function (e)
{
var container = $("YOUR CONTAINER SELECTOR");
if (!container.is(e.target)&& container.has(e.target).length === 0)
{
container.hide();
}
});
這個工作適合我 – 2017-09-27 08:43:15
- 1. Tmux:當它失去焦點時自動隱藏面板
- 2. UITextField失去焦點時隱藏鍵盤
- 3. 失去焦點時隱藏系統欄
- 4. 如何在失去焦點時隱藏div?
- 5. 當窗口失去焦點時隱藏JDialog窗口
- 6. 當應用程序失去焦點時隱藏winform的代碼
- 7. 隱藏DIV當點擊它
- 8. 當點擊它時隱藏一個div
- 9. 在失去焦點時隱藏軟鍵盤
- 10. 如何在失去焦點時隱藏ajaxtoolkit calendarextender?
- 11. 當一個UIControl被隱藏時,它會失去它的功能
- 12. gtk:當應用程序失去焦點時如何隱藏窗口
- 13. 當AutoPostBack爲真時OnTextChanged失去焦點
- 14. 當列隱藏時,Jqgrid失去全寬
- 15. NG-模型失去焦點
- 16. 當點擊另一個元素時不要失去焦點
- 17. 力CONTENTEDITABLE DIV停止接受輸入它失去焦點的Webkit
- 18. jquery實時焦點模糊
- 19. 當它失去焦點時,WPF刷新TreeView
- 20. 當它使用sendBroadcast和ACTION_MEDIA_MOUNTED時,應用程序失去焦點
- 21. 當它失去焦點時,以編程方式關閉NSWindow
- 22. 使用焦點和模糊在無序列表中顯示和隱藏DIV
- 23. 如何隱藏表時,它模糊/或點擊文件,表外
- 24. 當焦點丟失在Android中時,不要隱藏對話框
- 25. jQuery - 焦點/模糊顯示/隱藏輸入組
- 26. Ultraoptionset失去焦點
- 27. 當離開它時隱藏DIV
- 28. 如果窗口失去焦點,隱藏光標?
- 29. 隱藏鍵盤失去焦點關閉的UISearchBar
- 30. 應用程序失去焦點隱藏窗口
你用什麼html/jQuery?你可以鏈接到一個現場演示(也許[JS小提琴](http://jsfiddle.net/)或[JS斌](http://jsbin.com/))? – 2011-03-17 10:33:53
重複,我想:http://stackoverflow.com/questions/4629774/hide-div-on-blur – Sergey 2011-03-17 10:44:44
@Sergey,很好找。投票結果爲「完全重複」。 – 2011-03-17 10:45:37