не может показать элемент рядом с флажком

0

У меня такой HTML:

<input type="checkbox" class="chk-class" /> Click to enable<br/>
<div class="hidden">Hidden content here</div>

Я хочу показать содержимое при щелчке по галочке. Итак, здесь JS:

$('.chk-class').bind('click', function(){
    $(this).closest('.hidden').show();
});

Почему это не работает?

PS: Я не хочу использовать идентификаторы. Я хочу, чтобы это было динамически назначено, поскольку у меня есть несколько флажков.

  • 0
    $ (Это) .next () шоу ().
Теги:

4 ответа

1
Лучший ответ

Это второй следующий брат из того, что я вижу

$('.chk-class').on('change', function(){
    $(this).next().next().toggle();
});

Демо: скрипка

Другой способ (если вы не уверены в элементах между флажком и скрытым)

$('.chk-class').on('change', function () {
    $(this).nextUntil('.hidden').last().next().toggle();
});

Демо: скрипка

  • 0
    пользователь, я думаю, вот ваше решение +1 лучше, чем мое
  • 0
    это тоже сработало. nextAll или nextUntil до кажутся оба работают
0
$('.chk-class').change(function(){
    $(this).next('.hidden').toggle();
});
0

ближайшие шаги вверх используют next

$(this).next().show();

EDIT используйте nextAll('selector:first') чтобы отобразить только следующий элемент с определенным class/id etc

$(this).nextAll('.hidden:first').show()
  • 0
    есть текст и <br/> между флажком и div. я хочу иметь возможность просто найти следующий элемент по имени класса "скрытый"
  • 1
    @ user2914191 вам нужно поделиться правильной разметкой, если вы хотите решение
Показать ещё 2 комментария
0

Сначала вы должны скрыть свой hidden div с отображением: none

.hidden {
    display: none;
}

тогда

$(".chk-class").click(function(){
    $(".hidden").css("display","block");
});

http://jsfiddle.net/e5Jvg/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню