IndexOf не находит элемент в массиве

192
26 февраля 2019, 16:30

Добавляю в массив элементы страницы (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, хотя элементы там есть. Почему может не работать и как исправить?

Answer 1

$(this) - вызов функции $/jQuery, который возвращает новый/свежесозданный объект-обертку вокруг набора DOM-элементов, в данном случае - одного элемента this. Такого объекта-ссылки не может существовать в массиве.

Храните в массиве ссылки на DOM-элементы:

list.push(document.getElementById("test"));
...
console.log(list.indexOf(this));
Answer 2

Если вы пишете с помощью 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);
});
READ ALSO
Помогите нарисовать canvas!

Помогите нарисовать canvas!

Просьба помочь нарисовать canvasНеобходимо после сделать анимацию отрисовки этого canvas при скролле

187
Canvas второй цвет, удаление значения из массива

Canvas второй цвет, удаление значения из массива

Есть canvas с кругамиПроблемы в том, что круги мерцают(это из-за удаления объекта из массива), я вроде бы удаляю тот элемент, который надо и на секунду...

192
Две inline клавиатуры. Telegtram bot

Две inline клавиатуры. Telegtram bot

У меня есть две inline клавиатуры если я их последовательно вызываю, то их callback_data путается

177
как сделать multipart/form-data request вместе с hash ключом?

как сделать multipart/form-data request вместе с hash ключом?

тут вроде все правильно написал а вот с параметром signature скорее всего ошибка

190