JQuery, как: нажмите где угодно за пределами отделения, отделение постепенно исчезает

В JQuery, как я сделал бы его так, чтобы, если у меня было отделение, с различными элементами в нем, выбором, поисковым входом, и т.д., что, когда я нажимаю за пределами отделения на странице, отделение постепенно исчезает, но я могу нажать на выбор и тип в поисковом входе и не иметь его, исчезают? любая справка ценится. - зарубка

8
задан ExodusNicholas 23 January 2010 в 20:54
поделиться

4 ответа

Ответ кода утки неполный, потому что вам нужно его иметь не выцветает, если вы нажмете сам Div (только снаружи). Так сказать, что ваш Div, который должен исчезнуть, имеет идентификатор «меню».

jQuery("#menu").click(function(){ return false; });
jQuery(document).one("click", function() { jQuery("#menu").fadeOut(); });

Использование один более лаконичнее, чем связывание / невывинность. Также события именные события не нужны здесь, если вы используете один , потому что нет необходимости явно разминировать определенный обработчик клики на документе.

Возвращение false просто говорит: «Остановить пузыривание этого события до документа».

25
ответ дан 5 December 2019 в 05:19
поделиться

Во многих модальных диалогах используется частично прозрачный оверлей, который покрывает всю страницу, указывая, что диалог имеет фокус. Я бы посчитал это лучшим способом выполнить то, что вы хотите. Если вы действительно не хотите, чтобы страница была затемнена или окрашена в серый цвет, вы всегда можете просто сделать оверлей полностью прозрачным. Для примера обратите внимание на Facebox.

3
ответ дан 5 December 2019 в 05:19
поделиться

Вы можете связать обработчик щелчка на $ (документ) вроде

$(document).click(function(){
  $(this).unbind('click');
  $('#menu').fadeOut();
  }
-1
ответ дан 5 December 2019 в 05:19
поделиться

Я знаю, что это старый вопрос, но вот расширение, которое я написал для добавления функции clickOutside к элементам:

$.fn.extend({
// Calls the handler function if the user has clicked outside the object (and not on any of the exceptions)
clickOutside: function(handler, exceptions) {
    var $this = this;

    $("body").bind("click", function(event) {
        if (exceptions && $.inArray(event.target, exceptions) > -1) {
            return;
        } else if ($.contains($this[0], event.target)) {
            return;
        } else {
            handler(event, $this);
        }
    });

    return this;
}

}

С этим вы легко можете сделать

$("#menu").clickOutside(function(event, obj) { obj.fadeOut() });
3
ответ дан 5 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: