2011-02-24 2 views
1

У меня есть следующий скрипт, который работает почти идеально:Закрыть по щелчку в любом

http://jsfiddle.net/oshirowanen/uUAqe/

Я просто нужно иметь 1 добавлена ​​возможность где-либо раскрывающийся автоматически закрыть независимо от того, где на странице пользователь нажимает , будь то на пустой части страницы, на кнопке, в текстовом поле и т.д. и т.п.

ответ

6

Пожалуйста, смотрите обновленный jsFiddle страница здесь: http://jsfiddle.net/KYqyU/

Чтобы объяснить, что это делается, во-первых, вы связать щелчок эв в документ, который скроет навигационные выпадающие списки.

$(document).click(function() { 
    $('.dropdown').hide(); 
    $('.navigation').removeClass("active"); 
}); 

Тогда после этого, вы изменяете событие щелчка на .navigation классе к return false который останавливает событие документа от распространяющихся и скрытия навигации в данном случае.

$('.navigation').click(function() { 
    $(this).siblings('.navigation.active').click(); 
    $(this).toggleClass('active').next().toggle(); 
    return false; 
}); 

Как Марк также отмечает, вы можете использовать event.StopPropagation(), чтобы остановить распространение. Если вы используете этот метод, вам необходимо передать event в функцию обратного вызова щелчка в качестве аргумента/параметра.

2

Попробовать это, чтобы скрыть навигацию ...

$('.navigation').click(function(event) { 
    $(this).siblings('.navigation.active').click(); 
    $(this).toggleClass('active').next().toggle(); 
    event.stopPropagation(); 
}); 
$(document).click(function(event) { 
    $('.navigation.active').click(); 
    $('.navigation').removeClass("active"); 
}); 

Это использует event.StopPropagation() который останавливает любые события из бурлит в РОМ. Поскольку мы только запускаем скрыть, когда .navigation не является нажатым элементом.

Пример по jsfiddle.

Смежные вопросы