2012-03-16 3 views
0

на моем сайте Я хочу сделать индивидуальный выбор. На клик я хочу, чтобы slideDown div, у которого есть некоторые фильтры. Состав:Пользовательский выбор в jQuery

<div class="select" style="position:relative;height:20px;"> 
    <span class="label">somelabel</span> 
    <div style="display:none;position:absolute;top:20px;left:0;" class="select_inner"> 
     <label for="something"> 
     <input type="text" name="something"> 
     </label> 
     <label for="something"> 
     <input type="text" name="something"> 
     </label> 
    </div> 
</div> 

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

$('.select').click(function(){ 
    var select = $('.select_inner', this); 
    select.slideDown(); 
    $(this).parents().click(function(){ 
     select.slideUp(); 
    }); 
}); 

И это работает, но неправильно. Когда я нажимаю на моем DIV, ребенок ДИВ скользит вниз и мгновенно вверх ...

ответ

0

Вы можете сделать это:

$('.select').click(function(event){ 
event.stopPropagation(); 
var select = $('.select_inner', this); 
select.slideDown(); 

}); 

$('html').click(function() { 
var select = $('.select_inner', this); 
select.slideUp(); 
}); 

Смотрите эту jsfiddle. Способ, которым он работает, заключается в том, что при каждом нажатии за пределами раздела select он пытается сместить div, но если вы нажмете на div select, он остановит это событие и сделает вместо этого slideDown.

EDIT

Я сделал ошибку в первоначальном сценарии. Я обновил сценарий выше, чтобы исправить проблему. См. Обновленную скрипту в IE и Firefox: http://jsfiddle.net/A6ZNY/1/

+0

Это работает отлично! Благодаря! – ddziaduch

+0

Нет проблем. Не забудьте отметить его как правильный ответ, выбрав отметку рядом с ответом. – Rondel

+0

Еще раз. Это не работает в FireFox и IE :( – ddziaduch

1

Попробуйте

$('.select span.label').click(function(){ 
    $('.select_inner').slideToggle("fast"); 
}); 
Смежные вопросы