jQery array issue

463
07 февраля 2017, 21:54

Что не так с кодом? Если сказать проще, то элемент не записывается в переменную, а так как элементов несколько, то должен образоваться массив, а он образовуется пустым.

    var zoombox = $("<div class='popup'></div>"); 
    var	underlay = $("<div class='underlayer'></div>");  
    var	imageBox = $("<div class='imgContent'></div>"); 
    var opengal = $(".expand"); 
    var targetImage = $(".midkar"); 
    var zoomedImage = targetImage.clone(); 
    var currentButton; 
    var	currentImage;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

Opengal и targetImage являются массивами (по 5 элементов в каждом (5 кнопок и 5 изображений))

Но с другими переменными все в порядке.

Answer 1

$(".expand") в консоли даёт иной результат?
@vp_arth Да, если так ввести, то оно верно отбирает элементы.

Это говорит о том, что на момент инициализации переменной opengal, в DOM элементов ещё не было.

Попробуйте перенести код ближе к концу страницы, например, перед закрывающим тегом </body>.

Также может помочь вынос этого кода на следующий тик событийного цикла:

var opengal;
setTimeout(function(){
  opengal = $(".expand");
}, 0);  

Однако этот вариант не даёт гарантий, DOM не обязан прогружаться синхронно.

Для объективности, приведу комментарий из обсуждения:

Очевидно, у вас элементы в дереве появляются уже после того как ваш код отработает. Найдите кто их добавляет - и перетащите ваш код туда. – Pavel Mayorov 1 час назад

READ ALSO
использование jQuery maphilight

использование jQuery maphilight

Доброго времени суток всем! Использую для одного из проектов данный плагин и столкнулся с некоторыми сложностямиМне понадобилось организовать...

569
зачем нужен fetch?

зачем нужен fetch?

советуют его применять вместо $ajax()

533
Маска ввода телефона из нескольких input

Маска ввода телефона из нескольких input

Как организовать такую маску ввода?

778
Как &ldquo;перезапустить&rdquo; owl carousel после ajax запроса?

Как “перезапустить” owl carousel после ajax запроса?

Суть в том, что я динамически подгружаю или убираю элементы из слайдера с помощью ajaxКак после очередного запроса "перезапустить" карусель,...

755