2013-04-14 3 views
0

У меня есть div .adsearch-panel, которые содержат некоторые поля выбора и текстовые поля. Я хочу скрыть его, щелкнув вне div. Для этого я использую;Распространение разворота div

$(document).on({ 
    mouseup: 
    function(e){ 
     var container = $('.adsearch-panel'); 

     if(container.has(e.target).length === 0) { 
      container.slideUp(200); 
     } 
    } 
}); 

выше кодирование работает хорошо, но даже если я нажимаю любые элементы внутри этого DIV, такие как отборные коробки, до сих пор его прокручивания. Я хочу сохранить его видимым, если щелкнуть div или что-нибудь внутри div.

Пожалуйста, помогите мне исправить это.

Спасибо и с уважением.

ответ

0

Ваш метод on не является правильным, должно быть:

$('document').on("mouseup", function (e) { 
    var container = $('.adsearch-panel'); 

    if(container.has(e.target).length === 0) { 
     container.slideUp(200); 
    } 
}); 
+0

Ну, '$ ('документ')' должен быть '$ (документ)' –

+0

Thank вам, мне это понравилось, но все равно так же, как и раньше. – user1915190

0

Я считаю, что e.target здесь ссылаюсь на document. Вы должны поставить stopPropagation для нажатия на DIV:

$('.adsearch-panel').on('mouseup', function(e) { e.stopPropagation(); }); 
0

LIVE DEMO

$(function(){ 
    $("body").on('click', function(ev) { 
     var myCN = ev.target.className; 
     if (myCN !== 'adsearch-panel') { 
      $('.adsearch-panel').hide(); 
     } 
    }); 

    $('.showAdsearch').on('click', function(e) { 
     e.stopPropagation(); 
     $('.adsearch-panel').show(); 
    }); 
}); 
Смежные вопросы