Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Еще раз про js-объект и dom-елемент при нём (https://javascript.ru/forum/events/51362-eshhe-raz-pro-js-obekt-i-dom-element-pri-njom.html)

kostyanet 04.11.2014 16:00

Еще раз про js-объект и dom-елемент при нём
 
О вреде расширения дом-объекта хорошо все написано, например http://perfectionkills.com/whats-wro...nding-the-dom/ Но кончается на самом интересном месте. Нашел типа продолжение, http://stackoverflow.com/questions/7...extend-the-dom

Цитата:

var elems = this.collection;

конец цитаты. Вопрос: как найти elem в this.collection?

Ну например прилетел по событию, или кто-то его нашел и хочет проверить, не важно. Получаем elem, находим в коллекции, берем свойства, применяем методы.

Как его там найти? Конкретный вот этот event.target

kostyanet 05.11.2014 19:48

Ну кто-нибудь покажите как вы делаете? Ни разу что ли с массивами объектов не приходилось никому дела иметь?

Мне надо просто посмотреть, я заколебался уже искать.

Octane 05.11.2014 20:31

Зачем искать элемент, если event.target и так ссылка на элемент? Проверить, есть ли такой элемент в коллекции? Просто в цикле пройтись по коллекции и сравнить:
function findIndex(iterable, item) {
    var i = iterable.length;
    while (i--) {
        if (item === iterable[i]) {
            return i;
        }
    }
    return -1;
}


или так (не для старых IE)
Array.prototype.indexOf.call(iterable, item)


ну или ES6 вариант
Array.from(iterable).indexOf(item)


в Firefox еще так можно
Array.indexOf(iterable, item)

kostyanet 05.11.2014 21:44

Цитата:

Сообщение от Octane
Просто в цикле пройтись по коллекции и сравнить:

Ну то есть юзер нажал кнопку - просто в цикле пройтись и найти тождество? В общем это именно так все и делается? Ну тогда я спокоен. А то блин думаю как дурак индексирую эти массивы, чтобы просто в циклы не ходить. Оказывается даже лучше делаю.


Часовой пояс GMT +3, время: 03:30.