Выбрать все, кроме одного div'а. Как?
Здравствуйте.
Необходимо сделать, чтобы форма авторизации всплывала при нажатии на ссылку и исчезала при клике в любом месте, кроме всплывающего блока с формой. Подскажите как это сделать?? Не могу сделать вторую часть задачи (выбрать все, кроме всплывающего блока).
<body>
<p class="login"><a href="#">Log in</a></p>
<div id="appearing-box">
<form action="">
<fieldset>
<table>
<tr>
<td>Логин:</td>
<td><input type="text" value="" /></td>
</tr>
<tr>
<td>Пароль:</td>
<td><input type="password" value="" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Войти" /></td>
</tr>
</table>
</fieldset>
</form>
</div>
</body>
$(document).ready(function(){
$("p.login a").click(function(){
$("#appearing-box").show("fast");
return false;
})
$(":not(#appearing-box)").click(function(){
$("#appearing-box").hide()
})
});
|
Ставим onclick на весь документ, смотрим, не является ли event.target нужным вам блоком (или его потомком), если нет — скрываем блок.
|
Цитата:
|
$(document).click(function(e) {
e = e || window.event;
t = e.target || e.srcElement;
if (!$(t).is('#block') && !$(t).parents().find('#block').size()==0) {
$('#block').hide();
}
});
|
$(document).click(function(e){
e = e || window.event;
t = e.target || e.srcElement;
if (!$(t).is('#appearing-box') && $(t).parents().find('#appearing-box').size()==0) {
$('#appearing-box').hide();
}
});
Убрал отрицание у второго условия. Иначе был обратный эффект. Еще, не могли бы вы раскрыть смысл 2-ой и 3-ей строк. Не совсем понятно, что это. А селектором :not нельзя тут обойтись?? |
Юрий Шу, ввиду того, что используется jQuery, 2-3 строки смысла лишены совершенно -- это нормализация события и target'a, она делается jQuery до обработчика.
|
e1f, то есть это как-то сократить можно?
что такое target подскажите тоже… |
$(document).click(function(e){
if (!$(e.target).closest('#appearing-box').length) {
$('#appearing-box').hide();
}
});
target либо srcElement (смотря где) -- тот элемент, который инициировал событие |
Цитата:
|
Да. Это приведение к кроссбраузерному виду.
|
| Часовой пояс GMT +3, время: 12:10. |