jQuery работает только в firefox или safari / chrome console

#javascript #jquery #google-chrome #mozilla

#javascript #jquery #google-chrome #mozilla

Вопрос:

У меня эта странная ошибка. Мой код jQuery работает в Firefox, а также когда я вставляю его в консоль Safari или Chrome.

Я загрузил его первым, и я почти уверен, что он читает его, потому что отображается предупреждение. Вы видите что-то неправильное в коде, которое может повлиять на эту проблему?

 $(document).ready(function(){
    var questionOne = $('.questions').find('.question').eq(0);
    questionOne.removeClass('hide');
});
  

У меня нет никаких ошибок в консоли.
Я попытался загрузить скрипт, я думаю, всеми возможными способами, которые есть в Интернете.

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

1. Кажется синтаксически правильным, хотя вы удаляете hide как в случае if, так и в случае else … Остальное не имеет смысла. У него нет класса, согласно вашему, если значение false .

2. @Taplar это все еще продолжается, но я сокращаю его сейчас, чтобы делать то, что должно.

3. @Camila можете ли вы заменить $ на jQuery и посмотреть, поможет ли это что-нибудь? Это может быть из-за некоторых конфликтов с $ символом.

4. Звучит как условие гонки. Загружаются .questions ли .question элементы / динамически (например, через AJAX)? Если вы просматриваете источник страницы (не инспектор DOM, фактический источник), видите ли вы эти элементы?

5. Я вижу. Он отображается как неопределенный, потому что не может найти эти элементы по имени класса при загрузке страницы. Вероятно, вам потребуется использовать обработчик событий, чтобы получить текущее состояние ваших сгенерированных элементов с помощью .on() . См . api.jquery.com/on Это также помогло бы увидеть весь код, создающий их.

Ответ №1:

ну, ваш код кажется правильным, но, как могли сказать другие, если объект «.questions» не был обработан, вы не сможете его найти. у меня была подобная проблема раньше, и это то, что я сделал.

 $(document).ready(function () {
var Counter = 0;
var interval = setInterval(function () {
            Counter  = 20;
            var questionOne = $('.questions').find('.question').eq(0);
            questionOne.removeClass('hide');
            if (questionOne.length > 0)
                Counter = 3000;
            if (Counter >= 3000)
                clearInterval(interval)
        }, 2);
    });
  

или

 $(document).ready(function () {
      setTimeout(function () {
        var questionOne = $('.questions').find('.question').eq(0);
        questionOne.removeClass('hide');
    }, 100);
});
  

надеюсь, это поможет вам.