$("*").click(function(){
$(this); // how can I get selector from $(this) ?
});
Czy jest łatwy sposób na zdobycie selektora$(this)
? Istnieje sposób na wybranie elementu za pomocą jego selektora, ale co z pobieraniem selektora z elementu ?
$("*").click(function(){
$(this); // how can I get selector from $(this) ?
});
Czy jest łatwy sposób na zdobycie selektora$(this)
? Istnieje sposób na wybranie elementu za pomocą jego selektora, ale co z pobieraniem selektora z elementu ?
Odpowiedzi:
Ok, więc w komentarzu nad pytaniem pytający
Fidilip
powiedział, że tak naprawdę chodzi mu o zdobycie ścieżki do aktualnego elementu.Oto skrypt, który „wspina się” po drzewie przodków DOM, a następnie tworzy dość specyficzny selektor zawierający atrybuty
id
lubclass
na klikniętym elemencie.Zobacz, jak działa na jsFiddle: http://jsfiddle.net/Jkj2n/209/
Na przykład, gdybyś kliknął drugą zagnieżdżoną pozycję listy w kodzie HTML poniżej, otrzymasz następujący wynik:
HTML>BODY>UL>LI>UL>LI#sub2.subitem.otherclass
źródło
join(" > ");
, zapewni mi bezpośrednie dzieci, a tym samym bardziej rygorystyczną ścieżkę.::OSTRZEŻENIE::
.selector stał się przestarzały w wersji 1.7, usunięty w wersji 1.9
Obiekt jQuery ma właściwość selektora, którą widziałem wczoraj podczas kopania w jego kodzie. Nie wiem, czy jest zdefiniowane w dokumentach, czy jest to, jak wiarygodne (do przyszłego sprawdzania). Ale to działa!
Edycja : gdybyś znalazł selektor wewnątrz zdarzenia, najlepiej byłoby, gdyby informacje te były częścią samego zdarzenia, a nie elementu, ponieważ element może mieć przypisane wiele zdarzeń kliknięcia za pomocą różnych selektorów. Rozwiązaniem byłoby użycie otoki dookoła
bind()
,click()
itp., Aby dodać zdarzenia zamiast dodawać je bezpośrednio.Selektor jest przekazywany jako własność obiektu o nazwie
selector
. Uzyskaj do niego dostęp jakoevent.data.selector
.Wypróbujmy to na niektórych znacznikach ( http://jsfiddle.net/DFh7z/ ):
Zastrzeżenie : pamiętaj, że tak jak w przypadku
live()
zdarzeń, właściwość selektora może być nieprawidłowa, jeśli używane są metody przechodzenia DOM.Poniższy kod NIE zadziała, ponieważ
live
opiera się na właściwości selektora, która w tym przypadku jesta.parent()
- nieprawidłowym selektorem.Nasza
addEvent
metoda zostanie uruchomiona, ale Ty również zobaczysz niewłaściwy selektor -a.parent()
.źródło
No Such jQuery Method Exists
We współpracy z @drzaus opracowaliśmy następującą wtyczkę jQuery.
jQuery.getSelector
Zminimalizowany JavaScript
Użycie i problemy
Fiddle z testami QUnit
http://jsfiddle.net/CALY5/5/
źródło
$.map
* opcjonalnie ogranicznika (potrzeby rozebrać dziwne pustych zmiennych) * nie trzeba sprawdzićhasOwnProperty
wforeach
pętli będzie bezpieczny?' > '
powodowałby, że nie zwracałby selektora elementu.Próbowałeś tego?
źródło
*
selektora, jest bardzo wolny!Wydałem wtyczkę jQuery: jQuery Selectorator , możesz uzyskać taki selektor.
źródło
Spróbuj tego:
źródło
Po prostu dodaj warstwę nad funkcją $ w ten sposób:
Teraz możesz robić takie rzeczy jak
i zwróci „a” nawet w nowszych wersjach jQuery.źródło
http://www.selectorgadget.com/ jest bookmarkletem zaprojektowanym specjalnie dla tego przypadku użycia.
To powiedziawszy, zgadzam się z większością innych ludzi co do tego, że powinieneś sam nauczyć się selektorów CSS, próba wygenerowania ich za pomocą kodu jest nie do utrzymania. :)
źródło
Dodałem kilka poprawek do poprawki @ jessegavin.
Zwróci to natychmiast, jeśli element zawiera identyfikator. Dodałem również sprawdzanie atrybutu nazwy i selektor n-tego dziecka w przypadku, gdy element nie ma identyfikatora, klasy lub nazwy.
Nazwa może wymagać określenia zakresu w przypadku, gdy na stronie znajduje się wiele formularzy i mają podobne dane wejściowe, ale jeszcze tego nie obsłużyłem.
źródło
Otrzymywałem wiele elementów nawet po powyższych rozwiązaniach, więc rozszerzyłem pracę dds1024, aby jeszcze bardziej wskazać pinem element dom.
Np. DIV: n-te-dziecko (1) DIV: n-te-dziecko (3) DIV: n-te-dziecko (1) ARTYKUŁ: n-te-dziecko (1) DIV: n-te-dziecko (1) DIV: n-te-dziecko (8) DIV : nth-dziecko (2) DIV: nth-dziecko (1) DIV: nth-dziecko (2) DIV: nth-dziecko (1) H4: nth-dziecko (2)
Kod:
źródło
Dzięki temu możesz uzyskać ścieżkę selektora klikniętego elementu HTML -
źródło
Cóż, napisałem tę prostą wtyczkę jQuery.
To sprawdza identyfikator lub nazwę klasy i spróbuj podać jak najwięcej dokładnego selektora.
źródło
Czy próbujesz uzyskać nazwę bieżącego tagu, który został kliknięty?
Jeśli tak, zrób to ..
Tak naprawdę nie możesz uzyskać „selektora”, a „selektora” w twoim przypadku
*
.źródło
Kod JavaScript dla tego samego, na wypadek, gdyby ktoś potrzebował, tak jak ja tego potrzebowałem. To tylko tłumaczenie wybranej powyżej odpowiedzi.
źródło
Biorąc pod uwagę niektóre odpowiedzi tutaj przeczytane, chciałbym zaproponować to:
Może przydatne do stworzenia wtyczki jQuery?
źródło
Dziękuję p1nox!
Moim problemem było ponowne skupienie się na wywołaniu Ajax, które modyfikowało część formularza.
Musiałem tylko zamknąć twoją funkcję we wtyczce jQuery:
źródło
To nie pokaże ścieżki DOM, ale wyświetli reprezentację w postaci łańcucha tego, co widzisz np. W debugerze chrome podczas przeglądania obiektu.
https://developer.chrome.com/devtools/docs/console-api#consolelogobject-object
źródło
Co powiesz na:
Nie wierzę, że jQuery przechowuje użyty tekst selektora. W końcu jak by to działało, gdybyś zrobił coś takiego:
źródło
$('div').find('a').selector
jestdiv a
. Jeśli zdarzenia nie są tworzone za pomocą funkcji jQuery, ale zamiast tego opakowanie, uważam, że selektor można przekazać jako argumenty danych do modułu obsługi zdarzeń.Najlepsza odpowiedź byłaby
źródło