Добавляю в массив элементы страницы (td), вывожу(console.log(arr);)(пример):
(2) [jQuery.fn.init(1), jQuery.fn.init(1)]
0: jQuery.fn.init [tr.1539953619.hovered.on.used]
1: jQuery.fn.init [tr.1539949435.hovered.on.used]
length: 2
__proto__: Array(0)
то есть, элементы добавляются правильно, дальше когда использую поиск элементов:
console.log(arr.indexOf($(this))); //$(this) потому что при клике если элемент не выбран (отсутствует класс used) добавляет элемент (arr[list.length] = $(this);) если нет - должно выводить его индекс
всегда выводит -1, хотя элементы там есть. Почему может не работать и как исправить?
$(this)
- вызов функции $
/jQuery
, который возвращает новый/свежесозданный объект-обертку вокруг набора DOM-элементов, в данном случае - одного элемента this
. Такого объекта-ссылки не может существовать в массиве.
Храните в массиве ссылки на DOM-элементы:
list.push(document.getElementById("test"));
...
console.log(list.indexOf(this));
Если вы пишете с помощью jQuery, то не нужно смешивать его с чистым js. Для сравление jQuery элементов можно использовать is:
element1.is(element2)
Тогда для проверки есть ли элемент в массиве можно использовать что-то типа
arrayItems.some((element) => { return element.is(element2); }
Где element - это массива, а element2 - то что вы пытаетесь найти в массиве
А для того, чтобы найти элемент в массиве
let founded = arrayItems.filter((element) {
return element.is(element2);
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Просьба помочь нарисовать canvasНеобходимо после сделать анимацию отрисовки этого canvas при скролле
Есть canvas с кругамиПроблемы в том, что круги мерцают(это из-за удаления объекта из массива), я вроде бы удаляю тот элемент, который надо и на секунду...
У меня есть две inline клавиатуры если я их последовательно вызываю, то их callback_data путается
тут вроде все правильно написал а вот с параметром signature скорее всего ошибка