Неверно срабатывает bind
Здравствуйте.
Почему не работает следующий код?
$().ready(function() {
$('body')
.append('<div id="pf_search" style="width:262px; border:1px solid grey;">Hello!</div>')
.click(function(){
$('#pf_search').hide();
$('body').unbind('click');
});
$('#pf_name').click(function(){
$('#pf_search').slideDown('fast');
$('body').click(function(){
$('#pf_search').hide();
$('body').unbind('click');
});
});
});
Первый клик на body обрабатывается. Следующий клик на pf_name раскрывает pf_search, но клик на body его уже не прячет. pf_search прячется только при клике на pf_name, xотя обработчик стоит на body. |
$('body').click(function(){$(this).unbind('click') }); -- говноидея.
$(function() {
$('body').
append('<div id="pf_search" style="width:262px; border:1px solid grey;">Hello!</div>').
one('click', function(){
$('#pf_search').hide();
});
$('#pf_name').click(function(){
$('#pf_search').slideDown('fast');
$('body').one('click', function(){
$('#pf_search').hide();
});
});
});
Так работает? |
Нет, если не вешать one на body в callback SlideDown :) Решение в этом.
А за подсказку с one - спасибо ) |
| Часовой пояс GMT +3, время: 10:25. |