$("*").click(function(){
$(this); // how can I get selector from $(this) ?
});
Apakah ada cara mudah untuk mendapatkan selektor$(this)
? Ada cara untuk memilih elemen dengan selektornya, tapi bagaimana dengan mendapatkan selektor dari elemen ?
Jawaban:
Oke, jadi dalam komentar di atas penanya pertanyaan
Fidilip
mengatakan bahwa yang sebenarnya dia cari adalah mendapatkan jalur ke elemen saat ini.Berikut ini skrip yang akan "memanjat" pohon leluhur DOM dan kemudian membangun pemilih yang cukup spesifik termasuk atribut
id
atau apa punclass
pada item yang diklik.Lihat ini bekerja di jsFiddle: http://jsfiddle.net/Jkj2n/209/
Misalnya, jika Anda mengklik daftar item daftar bersarang ke-2 dalam HTML di bawah, Anda akan mendapatkan hasil sebagai berikut:
HTML>BODY>UL>LI>UL>LI#sub2.subitem.otherclass
sumber
join(" > ");
, akan memberi saya anak langsung dan karenanya jalur yang lebih ketat .::PERINGATAN::
.selector sudah tidak digunakan lagi mulai versi 1.7, dihapus sejak 1.9
Objek jQuery memiliki properti pemilih yang saya lihat saat menggali kodenya kemarin. Tidak tahu apakah itu didefinisikan dalam dokumen seberapa andal itu (untuk pemeriksaan di masa mendatang). Tapi itu berhasil!
Edit : Jika Anda menemukan pemilih di dalam acara, informasi tersebut idealnya harus menjadi bagian dari acara itu sendiri dan bukan elemen karena sebuah elemen dapat memiliki beberapa peristiwa klik yang ditetapkan melalui berbagai pemilih. Solusinya adalah dengan menggunakan pembungkus ke sekitar
bind()
,click()
dll. Untuk menambahkan acara daripada menambahkannya secara langsung.Selektor sedang diteruskan sebagai properti objek bernama
selector
. Akses sebagaievent.data.selector
.Mari kita coba di beberapa markup ( http://jsfiddle.net/DFh7z/ ):
Penafian : Ingatlah bahwa seperti halnya
live()
kejadian, properti selektor mungkin tidak valid jika metode traversal DOM digunakan.Kode di bawah TIDAK akan berfungsi, karena
live
bergantung pada properti selector yang dalam hal ini adalaha.parent()
- selector yang tidak valid.addEvent
Metode kami akan aktif, tetapi Anda juga akan melihat pemilih yang salah -a.parent()
.sumber
No Such jQuery Method Exists
Bekerja sama dengan @drzaus, kami telah membuat plugin jQuery berikut.
jQuery.getSelector
Javascript yang diperkecil
Penggunaan dan Gotchas
Fiddle w / QUnit test
http://jsfiddle.net/CALY5/5/
sumber
$.map
* pembatas opsional (perlu menghapus tagNames kosong yang aneh) * tidakkah Anda perlu memeriksahasOwnProperty
dalam satuforeach
lingkaran agar aman?' > '
akan menyebabkannya tidak mengembalikan pemilih elemen.Apakah kamu sudah mencobanya?
sumber
*
selektor, ini sangat lambat!Saya telah merilis plugin jQuery: jQuery Selectorator , Anda bisa mendapatkan selector seperti ini.
sumber
Coba ini:
sumber
Cukup tambahkan lapisan di atas $ function dengan cara ini:
Sekarang Anda dapat melakukan hal-hal seperti
dan akan mengembalikan "a" bahkan pada versi jQuery yang lebih baru.sumber
http://www.selectorgadget.com/ adalah bookmarklet yang dirancang secara eksplisit untuk kasus penggunaan ini.
Yang mengatakan, saya setuju dengan kebanyakan orang lain bahwa Anda hanya harus mempelajari pemilih CSS sendiri, mencoba membuatnya dengan kode tidak berkelanjutan. :)
sumber
Saya menambahkan beberapa perbaikan untuk perbaikan @ jessegavin.
Ini akan langsung kembali jika ada ID pada elemen. Saya juga menambahkan pemeriksaan atribut nama dan pemilih anak ke-n jika elemen tidak memiliki id, kelas, atau nama.
Namanya mungkin perlu dilingkupi jika ada beberapa formulir di halaman dan memiliki masukan yang serupa, tetapi saya belum menanganinya.
sumber
Saya mendapatkan beberapa elemen bahkan setelah solusi di atas, jadi saya memperpanjang pekerjaan dds1024, untuk elemen dom yang lebih mengarah ke pin.
misal DIV: anak ke-n (1) DIV: anak ke-n (3) DIV: anak ke-n (1) ARTICLE: anak ke-n (1) DIV: anak ke-n (1) DIV: anak ke-n (8) DIV : anak ke-n (2) DIV: anak ke-n (1) DIV: anak ke-n (2) DIV: anak ke-n (1) H4: anak ke-n (2)
Kode:
sumber
Ini bisa memberi Anda jalur pemilih dari elemen HTML yang diklik-
sumber
Nah, saya menulis plugin jQuery sederhana ini.
Ini memeriksa id atau nama kelas, dan mencoba memberikan pemilih yang tepat sebanyak mungkin.
sumber
Apakah Anda mencoba mendapatkan nama tag saat ini yang diklik?
Jika ya, lakukan ini ..
Anda tidak bisa benar-benar mendapatkan "selector", "selector" dalam kasus Anda adalah
*
.sumber
Kode Javascript untuk hal yang sama, jika ada yang membutuhkan, karena saya membutuhkannya. Ini hanya terjemahan dari jawaban yang dipilih di atas.
sumber
Mempertimbangkan beberapa jawaban yang dibaca di sini saya ingin mengusulkan ini:
Mungkin berguna untuk membuat plugin jQuery?
sumber
Terima kasih p1nox!
Masalah saya adalah mengembalikan fokus pada panggilan ajax yang mengubah bagian dari formulir.
Saya hanya perlu merangkum fungsi Anda dalam plugin jQuery:
sumber
Ini tidak akan menampilkan jalur DOM, tetapi akan mengeluarkan representasi string dari apa yang Anda lihat di misalnya chrome debugger, saat melihat objek.
https://developer.chrome.com/devtools/docs/console-api#consolelogobject-object
sumber
Bagaimana tentang:
Saya tidak percaya jQuery menyimpan teks pemilih yang digunakan. Lagi pula, bagaimana itu akan berhasil jika Anda melakukan sesuatu seperti ini:
sumber
$('div').find('a').selector
tersebutdiv a
. Jika peristiwa tidak dibuat melalui fungsi jQuery, tetapi sebagai pembungkus, saya yakin pemilih dapat diteruskan sebagai argumen data ke pengendali peristiwa.Jawaban terbaiknya adalah
sumber