2011-06-10 63 views
0

感謝inti的代碼我能夠找出答案!jquery:div隱藏/顯示焦點問題

的jQuery:

$(document).ready(function(){ 
    $("body").click(function(e) { 
     //checks to see if the tag you clicked has the #login 
     //div as a parent. 
     if($(e.target).closest("#login").size() == 0) { 
      //makes exception for the #login's <a> tag (id of a_login) 
      if((e.target.id) == 'a_login') { 
       $("#login").show(); 
      } else { 
       $("#login").hide(); 
      } 
     //if target has #login as parent, keep it visible 
     } else { 
      $("#login").show(); 
     } 
    }); 

}); 

工作的jsfiddle例如:http://jsfiddle.net/SuperPhil/3CmE7/

謝謝!


我想要登錄屏幕類似http://dropbox.com登錄。用戶點擊登錄鏈接並顯示div(CSS)並在焦點出現時消失。

這裏是我的jQuery

$('#login').bind('click', function() { 
    $('#login').addClass("clicked").focusout(function() { 
     $('#login').removeClass('clicked'); 
    }); 
}); 

這是行不通的。誰能幫我嗎?

編輯:

$('#login').click(function() { 
    $('#login div').addClass("clicked").blur(function() { 
     $('#login div').removeClass('clicked'); 
    }); 

}); 

回答

3

你正在尋找的事件是.blur().focusout()

編輯:點擊了#mydiv來隱藏它:

$("body").click(function(e) { 
    if ($(e.target).closest("#mydiv").size() == 0) { 
     $("#mydiv").hide(); 
    } 
}); 

如果這個隱藏#mydiv你點擊沒有它,因爲它的父母之一。

+0

給了一個更新,仍然無法正常工作。 – Phil 2011-06-10 17:15:19

+0

您應該在div中的輸入字段上設置模糊事件。另外,當您顯示div時,請在輸入字段上調用.focus(),您需要關注它。 – aorcsik 2011-06-10 17:50:24

+0

但我不想擁有它,因此用戶必須選擇一個輸入框才能看到它。 – Phil 2011-06-10 18:02:05

-1

我想你[R看起來像這樣...

HTML:

<a href="#">Click Me</a> 

<div id="login"> 
    <label>Username:</label><input type="text"/><br/> 
    <label>Password:</label><input type="password"/><br/> 
</div> 

的jQuery:

$(document).ready(function(){ 
    $("#login").hide(); 
    $('a').bind('click', function() { 
     $("#login").toggle().focus(); 
    }); 
    $("input").focusout(function(){ 
     $("#login").hide(); 
    }); 
}); 

http://jsfiddle.net/anish/ccFt9/1/

+0

這不起作用,因爲當我選擇第二個輸入框時,它會消失。 – Phil 2011-06-10 16:38:48