2013-05-11 2 views
0

Я создаю формат для публикации вещей в фид пользователя, и есть три варианта: текст, изображение и ссылка. У всех есть div, который использует jquery для всплытия. Я не могу понять, как скрыть другие div, когда один открыт, а другой щелкнут. Jsfiddle ясно показывает это.Как я могу скрыть div jquery, когда другие переключаются открыто

Заранее благодарим за все, что вы могли бы порекомендовать.

http://jsfiddle.net/NFTFw/252/

$('input[name=text]').click(function() { 
    $('#textpost').slideToggle($(this).is(':checked')); 
    }); 
$('input[name=link]').click(function() { 
    $('#linkpost').slideToggle($(this).is(':checked')); 
    }); 
$('input[name=image]').click(function() { 
    $('#imagepost').slideToggle($(this).is(':checked')); 
    }); 
+1

Что произойдет, если кто-то проверяет 2 галочки? оба раздела должны быть открыты? – PSL

+0

Если кто-то проверяет более одного окна, чем только поле, которое они нажали, должно быть открытым. Значение другого скрыто или закрыто. – user2367740

+0

Это ничего не разъясняет. Что произойдет, если проверено более одного флажка? Если вы используете радиокнопки для этого? – j08691

ответ

0

Добавление функциональности «радио» к флажкам и делает ее более динамичной, используя имя входа для выбора элемента для слайда.

$('input[type="checkbox"]').on('change', function() { 
    $('#' + this.name + 'post').slideToggle(this.checked) 
           .siblings('div') 
           .slideUp(); 
    $(this).siblings('input').prop('checked', false); 
}); 

FIDDLE

+0

Спасибо большое. Я попытаюсь реализовать оба. Новое для jquery, действительно ценят ответы. – user2367740

+1

Идентификаторы должны быть уникальными ... Посмотрите на флажок, и все они одинаковы. HTML тоже недействителен. – PSL

+0

@PSL - Не заметил, так как я не использовал идентификатор, но да, они должны быть уникальными в документе. – adeneo

0

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

, например:

function toggle(idList) { 
    for(i=0;i<idList.length;i++){ 
    $(idList[i]).slideToggle($(this).is(':checked')); 
} 
} 

и

 var ids = [ 'name-link', 'name-image', 'name-text' ]; 
    $('input[name=text]').click(function() { 
toggle(ids); 
}); 
    $('input[name=link]').click(function() { 
toggle(ids); 
}); 
    $('input[name=image]').click(function() { 
    toggle(ids); 
}); 

Это будет работать, если у вас уже есть логика, чтобы сделать флажков себя как радио-кнопки.

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