JQuery "$ ('div'). Hide () и .show" не работает для определенного div? - PullRequest
0 голосов
/ 26 октября 2011

У меня небольшая проблема.У меня есть функции jQuery hide() и show(), хорошо работающие со значениями выбора формы для обычных элементов <div>, но у меня есть один элемент <div> (первый) с некоторым кодом, который не отображается, когда онselected.

Вот ссылка для примера: http://www.shmoggo.com/3/diff.html

и вот код: http://www.shmoggo.com/3/diff.txt (извините, создание блока кода было слишком длинным)

Любой совет будет с благодарностью.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Div с id 2 и 3 являются простыми div с изображением. Верхний уровень (то есть) только div2 и div3 отображаются или скрываются в зависимости от выбора.

В div 1 у вас есть ряд внутренних элементов, которые также установлены для отображения: нет, потому что вы используете универсальный $ ( 'DIV') скрыть ();.

Всегда используйте идентификатор или селектор класса при выборе элементов. Следует избегать использования общих выражений

2 голосов
/ 26 октября 2011

Ваш div с id="1" содержит еще один div, который скрыт общим вызовом $('div').hide() - и больше никогда не показывается.

Кроме того, нет необходимости вкладывать несколько вызовов $(document).ready().

Попробуйте:

$(document).ready(function(){
    $("#dd").change(function(){
        var selected= $("#dd option:selected").data('size');
        $('div').hide();
        $div_to_show = $('#'+ selected); // cache element for better performance
        $div_to_show.show();
        $('div', $div_to_show).show(); // show divs nested below current div as well
    });

    $('div').hide();
});

Редактировать: Кроме того, цитата @bobince:

Также обратите внимание, что чисто числовые идентификаторынедопустимо в используемом вами типе HTML4 (и, как правило, его следует избегать по причинам совместимости)

Вы должны обязательно это прослушать.

...