#javascript #html #jquery
#javascript #HTML #jquery
Вопрос:
Я пытаюсь показывать и скрывать определенные списки на основе переданного аргумента функции, есть ли способ использовать jquery show () и hide () для достижения этого? В настоящее время, если добавить show () к функции, я получаю сообщение об ошибке «show () не является функцией». Как мне добавить отображение / скрытие в параметр функции или это невозможно, как я делаю?
codepen:https://codepen.io/mDDDD/pen/WNwrMLW
$('.additional-questions').hide();
$('.show-list').click(function () {
$('.additional-questions').show();
additionalQuestionToShow([0]).show().siblings().hide();
});
function additionalQuestionToShow($element) {
var list = $('.additional-questions-list');
for (var i = 0; i < list.length; i ) {
var listToShow = list[$element];
console.log(listToShow);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="additional-questions">
<div class="question-row">
<p class="text--bold">
Additional questions.
</p>
</div>
<!-- List 1 -->
<ul class="additional-questions-list">
<li>
LIST ONE
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
</ul>
<!-- List 2 -->
<ul class="additional-questions-list">
<li>
LIST TWO
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
</ul>
<!-- List 3 -->
<ul class="additional-questions-list">
<li>
LIST THREE
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
</ul>
</div><!-- /.additional-questions -->
<button class ="show-list">SHOW LIST</button>
Комментарии:
1. В опубликованном вами коде нет ошибки?
2. @FluffyKitten обновил codepen в соответствии с тем, чего я пытаюсь достичь, спасибо 🙂
3. Не могли бы вы также обновить код в вопросе, пожалуйста? Вопросы здесь должны быть автономными и включать всю необходимую информацию. Внешние ссылки в порядке, но только когда код также находится в вопросе, потому что внешние ссылки могут со временем меняться или прерываться, что делает вопрос бесполезным для пользователей в будущем 🙂 ОБНОВЛЕНИЕ: Кроме того, codepen, похоже, в любом случае совпадает с этим кодом?
4. @FluffyKitten хороший вызов и обновлен… еще раз спасибо
Ответ №1:
Если вы передаете индекс, вы можете использовать jquery eq
, чтобы использовать это число для захвата элементов, соответствующих селектору в этом индексе. Индекс основан на нуле, поэтому вместо того, чтобы начинаться с 1, они начинаются с 0.
Я также добавил некоторый код для отображения / скрытия элементов до и после щелчка, чтобы показать список.
$('.additional-questions-list').hide();
$('.question-row').hide();
$('.show-list-1').click(function() {
$('.additional-questions-list').hide();
additionalQuestionToShow(0);
});
$('.show-list-2').click(function() {
$('.additional-questions-list').hide();
additionalQuestionToShow(1);
});
$('.show-list-3').click(function() {
$('.additional-questions-list').hide();
additionalQuestionToShow(2);
});
function additionalQuestionToShow($element) {
$('.question-row').show();
$('.additional-questions-list').eq($element).show();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="additional-questions">
<div class="question-row">
<p class="text--bold">
Additional questions.
</p>
</div>
<!-- List 1 -->
<ul class="additional-questions-list">
<li>
LIST ONE
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
</ul>
<!-- List 2 -->
<ul class="additional-questions-list">
<li>
LIST TWO
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
</ul>
<!-- List 3 -->
<ul class="additional-questions-list">
<li>
LIST THREE
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
<li>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
</li>
</ul>
</div>
<!-- /.additional-questions -->
<button class="show-list-1">SHOW LIST 1</button>
<button class="show-list-2">SHOW LIST 2</button>
<button class="show-list-3">SHOW LIST 3</button>