Как выбрать первый из цикла

#javascript #jquery #parent-child #children

#javascript #jquery #родитель-потомок #дочерние элементы

Вопрос:

У меня есть 4 вопроса, которые повторяются: HTML выглядит так.

     <div class="question>

    <div>
     </div>
    <div class="question" id="question">
    <h1></h1>
    // conent inside
    </div>
   </div>

  </div>
  

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

Когда я говорю:

 $(function() {
   $('.question').children().eq(0).addClass('hide');

});
  

Он выбирает один ниже. когда я делаю:

 $(function() {
   $('.questions').children().eq(0).addClass('hide');

});
  

Затем он выбирает все разделы вопросов.

 JS:



        if(data.questions) {
            quiz.set("questions", data.questions);
        }
        queueRender();
    }

    out.prototype.addQuestions = function(questions) {
        var _this = this;
        $.each(questions, function(i, v){
            _this.addQuestion(v);
        })
    }
  

Комментарии:

1. Пожалуйста, добавьте неудачный сценарий. Как создать массив?

2. Нам нужно больше кода.

3. $(‘#question’).children().eq(0) — это способ получить доступ к первому элементу внутри этого div.

4. Я добавил больше, чтобы показать вам, как отображаются вопросы… @MXMXCII $(‘#question’).children().eq(0) — он выбирает первый h1 внутри div, который я хочу выбрать…

5. ТАКИМ образом, вставка повторяющегося идентификатора является недопустимым HTML в этом случае … не делайте этого.

Ответ №1:

Ваш пост менее чем на 100% понятен, поэтому просто угадайте его:

Учитывая эту разметку:

 <div id="quiz">
  <div class="question">
    <h1>one</h1> content 1
  </div>
  <div class="question">
    <h1>two</h1> content 2
  </div>
  <div class="question">
    <h1>three</h1> content 3
  </div>
</div>
  

Добавьте класс ‘hide’ ко всем вопросам, затем удалите из первого:

 $(function() {
 $('#quiz').find('.question').addClass('hide').eq(0).removeClass('hide');
});
  

Подробная версия:

 $(function() {
  $('#quiz').find('.question').addClass('hide');
  $('#quiz').find('.question').eq(0).removeClass('hide');
});
  

альтернативный подробный

 $(function() {
  $('#quiz').find('.question').addClass('hide');
  $('#quiz').find('.question').first().removeClass('hide');
});
  

Комментарии:

1. Спасибо. Хорошо, итак, я смешал некоторые вещи и получил свой правильный ответ, то есть: $(function() { var question = $(‘.questions’).find(‘.question’).eq(0); question.addClass(‘скрыть’); }); Как найду ли я следующий ответ на этот вопрос? добавить next() ?

2. Не соответствует вашему желанию, но $('.questions').find('.question').eq(1); является «следующим», если оно существует. или $('.questions').find('.question').each(... перебирать их.

3. Спасибо. Кстати, первое, что работало только в Mozilla. Есть идеи, почему он не работает в других браузерах? Извините за так много вопросов!

4. тупой с моей стороны, быстрый ввод не помещал идентификатор в разметку — исправлено