2012-10-19 18 views
5

Fallback nie ma znaczenia. Nie proszę bibliotek.js znaleźć obiekt w nodeList?

Mamy odwołanie do obiektu dom, zadzwonimy obj. W rzeczywistości jest to event.target.

Mamy listę węzłów, zadzwonimy pod numer nodes, którą otrzymaliśmy za pomocą querySelectorAll i selektora zmiennych.

nodes może zawierać 1 lub wiele elementów, a każdy z nich może mieć dzieci.

Musimy ustalić, czy obj jest jednym z tych elementów węzła lub dzieci elementów tych elementów węzłowych. Szukamy tutaj "rodzimej" funkcjonalności przeglądarki, możemy tworzyć własne pętle for i realizować to, szukamy alternatyw.

Coś jak:

nodes.contains(obj) LUB nodes.indexof(obj)

rozwiązania uwzględniające inne metody pobierania listy węzłów dopasować przeciwko są dopuszczalne, ale nie mam pojęcia, co to może być.

Odpowiedz

1

Nie sądzę, że istnieje wbudowana metoda DOM dla tego. Musisz przechodzić rekursywnie po numerze NodeList i sprawdzać równość z elementem. Inną opcją jest użycie Element.querySelectorAll na każdym pierwszopoziomowym elemencie z Twojego NodeList (szukanie na przykład identyfikatora twojego elementu). Nie jestem jednak pewien, jak by to wyglądało (inn).

+0

Tak, to jest także nasza obecna szkoła myślenia. Cóż, w pewnym sensie ... obiekt pochodzi z event.target, więc powracamy przez rodziców i dopasowujemy się do naszego selektora zmiennych za pomocą matchesSelector. Nie byliśmy również w stanie znaleźć wbudowanej metody, ale chcieliśmy wybrać kilka wspaniałych umysłów, aby zobaczyć, czy nie trafiliśmy. –

8

Nie jestem pewien, czy to będzie wyszukiwanie poza pierwszy poziom NodeList, ale można użyć tego wyrażenia rekursywnie, aby przejść i sprawdzić, czy element "obj" jest w węzłach NodeList ".

[].indexOf.call(nodes, obj) 
+0

Jest to wystarczająco dobre dla list węzłów płaskich – doABarrelRoll721

1

zrobiłem coś takiego:

Array.prototype.find.call(style.childNodes, function(child) { 
    if(child.textContent.includes(drawer.id)) { 
    console.log(child); 
    } 
}); 

wydaje się działać. Wtedy dziecko jest kolejnym węzłem html, który można dowolnie manipulować.

Powiązane problemy