2014-11-03 3 views
2

Я использую 2 скрипта, как показано ниже.jQuery toggle class & mouseup button issues

Первый скрипт open представляет собой div, когда нажата кнопка с классом «bookaviewing».

Мне нужен div с классной «формой бронирования», чтобы закрыть, когда кто-то щелкнет за пределами формы «бланк заказа» - второй скрипт делает это.

Моя проблема - когда вы нажимаете кнопку более одного раза (поскольку она находится за пределами формы «формы бронирования»), она не закрывает «форму бронирования» ... она просто продолжает открываться.

Мне нужно совместить 2 приведенных ниже сценария & нужна помощь.

Сценарий 1

<script type="text/javascript"> 
// set click/toggle event on bookaviewing button to show form 
$('.bookaviewing').click(function() { 
    $('.booking-form').slideToggle(400).toggleClass('opened'); 
    return false; 
}); 
</script> 

Сценарий 2

<script type="text/javascript"> 
// close booking-form when click outside of div 
$(document).mouseup(function (e){ 
    var bookingform = $(".booking-form"); 
    if (!bookingform.is(e.target) && bookingform.has(e.target).length === 0){ 
     bookingform.hide(); 
    } 
}); 
</script> 
+0

Если ур сценарий1 дает только проблемы, то только пост script1, Not 2 –

+1

дать jsfiddle ... –

+0

Я разместил их обоих, поскольку я думаю, что их нужно комбинировать. Оба работают индивидуально, но не вместе - поскольку кнопка не закрывает div. – user3544484

ответ

3

Вы должны исключить форму бронирования и кнопку переключения, чтобы избежать переключения открытия/закрытия в то же время:

http://jsfiddle.net/TrueBlueAussie/4vnvpcjb/3/

// set click/toggle event on bookaviewing button to show form 
$('.bookaviewing').click(function() { 
    $('.booking-form').slideToggle(400).toggleClass('opened'); 
    return false; 
}); 
$(document).on('mouseup', function (e){ 
    var bookingform = $(".booking-form"); 
    if (!bookingform.is(e.target) 
     && bookingform.has(e.target).length === 0 
     && !$(e.target).is('.bookaviewing')) 
    { 
     bookingform.slideUp(); 
    } 
}); 

Примечание: Я изменил щелчок снаружи, от hide() до slideUp, а, как hide был немного резким.

+0

U r True Blue Aussie :) +1 –