2013-02-15 2 views
1

я использовал toggle Скрыть/Показать DIVКак скрыть тумблер (ДИВ) при щелчке в любом месте на странице

HTML

<div class="wrap"> 

    <h1 id="selectBox">Service you&#39;re interested in</h1> 

    <div class="selectBox"> 
    <div class="selectBoxWrap"> 

     <ul class="selectBoxContent"> 
     <li><input type="checkbox" name="#" value="New Web Site" /> <span class="innerPageSelect">Website Design and Development</span></li> 
     <li><input type="checkbox" name="#" value="New Web Site" /> <span>Website Maintenance</span></li> 
     <li class="other"> 
      <p> 
      <label for="other">Other</label><br /> 
     <input type="text" name="other" value="" id="other" /> 
      </p> 
     </li> 
     </ul> 

     </div> 
    </div> 
</div> 

Jquery

$(function() { 

      $('#selectBox').click(function() { 
     $('.selectBoxContent').slideToggle('fast'); 
     return false; 

    }); 
     }); 

я хочу, скрыть тумблер DIV при нажатии в любом месте страницы после выбора услуг, проверив checkbox или введите что-то в textbox.

это моя скрипка here

свой комментарий и предложение ценится

спасибо заранее !!!

ответ

2

Используйте этот

$(document).click(function() { 
$('.selectBoxContent').slideUp('fast'); 
}); 

$(".selectBoxContent").click(function(e) { // Wont toggle on any click in the div 
e.stopPropagation(); 
}); 

Проверить это Fiddle

+1

Ваша идея намного ближе к тому, что она должна, но она превращает всю страницу в игру. – jhunlio

+0

Изменить щелчок документа с slideToggle на slideUp $ ('. SelectBoxContent'). SlideUp ('fast'); – bamittal

+0

Я изменяю эту часть '$ ('. SelectBoxContent'). SlideToggle ('fast');' to '$ ('. SelectBoxContent'). SlideUp ('fast');' как вы предлагаете, но все это не работает , – jhunlio

0

Вы можете связать обработчик событий нажмите на HTML тег:

$(function() { 
    $('#selectBox').click(function() { 
     $('html').click(function() { 
      $(this).unbind('click'); 
      $('.selectBoxContent').slideToggle('fast'); 
     }); 
     $('.selectBoxContent').slideToggle('fast'); 
     return false; 
    }); 
}); 
+0

почему вы используете '$ (это) .unbind ('нажмите');'? –

+0

Вам нужно только, чтобы html-теги кликают событие, чтобы закрыть меню, если оно открыто. Если событие не отключено, то нажатие в любом месте страницы откроет меню. Это зависит от того, как вы хотите, чтобы ваше меню работало. – tantricllama

+0

hi @tantricllama Ваша идея ближе к тому, чего я хочу достичь, но мне нужно сначала выбрать два или более сервисов, прежде чем закрывать переключатель. Кстати, большое спасибо за то, что уделил мне время. – jhunlio

0

Вы можете использовать как этот

$('html').click(function() { 
     $('.selectBoxContent').slideToggle('fast'); 
    }); 

Вот это fiddle

+0

Это приводит к тому, что вся страница переключает меню, нет? –

+0

Я согласен с @FloydPink, чтобы сделать всю страницу переключением. – jhunlio

0
$(function() { 
    $(document).on("click", function(e) { 
     if ($(e.srcElement).closest('.selectBoxWrap').length) return; 
     if ($('.selectBoxContent').is(":visible")) $('.selectBoxContent').slideToggle('fast'); 
    }); 
    $('#selectBox').on("click", function(e) { 
     if ($(e.srcElement).closest('.selectBoxWrap').length) return; 
     $('.selectBoxContent').slideToggle('fast'); 
     return false; 
    }); 
}); 

Fiddle: http://jsfiddle.net/TEyHC/9/

+0

благодарю вас за предложение, которое он делает чуть ближе, чего мне нужно достичь, кстати, так это то, что Я хочу [здесь] (http://dropdown-check-list.googlecode.com/svn/trunk/doc/dropdownchecklist.html#s1) – jhunlio

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