::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!
$('*').selector // returns *
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.
jQuery.fn.addEvent = function(type, handler) {
this.bind(type, {'selector': this.selector}, handler);
};
Selektor sedang diteruskan sebagai properti objek bernama selector
. Akses sebagaievent.data.selector
.
Mari kita coba di beberapa markup ( http://jsfiddle.net/DFh7z/ ):
<p class='info'>some text and <a>a link</a></p>
$('p a').addEvent('click', function(event) {
alert(event.data.selector); // p a
});
Penafian : Ingatlah bahwa seperti halnya live()
kejadian, properti selektor mungkin tidak valid jika metode traversal DOM digunakan.
<div><a>a link</a></div>
Kode di bawah TIDAK akan berfungsi, karena live
bergantung pada properti selector yang dalam hal ini adalah a.parent()
- selector yang tidak valid.
$('a').parent().live(function() { alert('something'); });
addEvent
Metode kami akan aktif, tetapi Anda juga akan melihat pemilih yang salah - a.parent()
.