Apakah ada cara untuk mendapatkan ID elemen yang menyalakan suatu acara?
Saya sedang memikirkan sesuatu seperti:
$(document).ready(function() {
$("a").click(function() {
var test = caller.id;
alert(test.val());
});
});
<script type="text/javascript" src="starterkit/jquery.js"></script>
<form class="item" id="aaa">
<input class="title"></input>
</form>
<form class="item" id="bbb">
<input class="title"></input>
</form>
Kecuali tentu saja bahwa var test
harus berisi id "aaa"
, jika acara dipecat dari form pertama, dan "bbb"
, jika acara dipecat dari form kedua.
javascript
jquery
Joda
sumber
sumber
event.target.id
pengatur acara untuk mendapatkan id elemen yang memecat suatu peristiwa.Jawaban:
Di jQuery
event.target
selalu merujuk ke elemen yang memicu acara, di manaevent
parameter dilewatkan ke fungsi. http://api.jquery.com/category/events/event-object/Perhatikan juga bahwa
this
itu juga akan berfungsi, tetapi itu bukan objek jQuery, jadi jika Anda ingin menggunakan fungsi jQuery di atasnya maka Anda harus merujuknya sebagai$(this)
, misalnya:sumber
$(event.target)
jika Anda memerlukan metode jQuery, misalnya$(event.target).attr("organisation:thingy");
,.Untuk referensi, coba ini! Berhasil!
sumber
$(this).attr("id");
tidak.e.target
akan memberi Anda elemen tepat yang menyebabkan acara tersebut dipecat meskipun itu adalah anak-anak, sedangkanthis
akan memberi Anda elemen tempat acara tersebut dilampirkan.Meskipun disebutkan dalam posting lain, saya ingin menjelaskan ini:
$(event.target).id
tidak terdefinisi$(event.target)[0].id
memberikan atribut id.event.target.id
juga memberikan atribut id.this.id
memberikan atribut id.dan
$(this).id
tidak terdefinisi.Perbedaannya, tentu saja, adalah antara objek jQuery dan objek DOM. "id" adalah properti DOM sehingga Anda harus berada di objek elemen DOM untuk menggunakannya.
(Ini membuatku tersandung, jadi mungkin tersandung orang lain)
sumber
event.target.id
tidak memberi apa-apa!$(event.target).attr('selector');
bekerja dengan baik untuk saya.Untuk semua acara, tidak terbatas hanya jQuery yang dapat Anda gunakan
Dimana
event.target
gagal jatuh kembalievent.srcElement
ke IE. Untuk memperjelas kode di atas tidak memerlukan jQuery tetapi juga berfungsi dengan jQuery.sumber
Anda dapat menggunakan
(this)
untuk referensi objek yang memecat fungsi.'this'
adalah elemen DOM ketika Anda berada di dalam fungsi panggilan balik (dalam konteks jQuery), misalnya, dipanggil oleh metode klik, masing-masing, mengikat, dll.Di sinilah Anda dapat mempelajari lebih lanjut: http://remysharp.com/2007/04/12/jquerys-this-demystified/
sumber
$(html).click()
(ini) akan mengembalikan objek html dan bukan elemen yang diklikSaya menghasilkan tabel secara dinamis dari database, menerima data dalam JSON dan memasukkannya ke dalam tabel. Setiap baris tabel mendapat unik
ID
, yang diperlukan untuk tindakan lebih lanjut, jadi, jika DOM diubah, Anda memerlukan pendekatan yang berbeda:sumber
Elemen yang dipecat acara kita miliki di properti acara
Kami mendapatkan objek simpul DOM yang mengatur event handler.
Sebagian besar simpul bersarang yang memulai proses bubbling yang kita miliki di
Objek acara selalu atribut pertama dari pengendali acara, contoh:
Lebih lanjut tentang delegasi acara Anda dapat membaca di http://maciejsikora.com/standard-events-vs-event-delegation/
sumber
Elemen sumber sebagai objek jQuery harus diperoleh melalui
Ini memberi Anda sumber klik, bukan elemen yang ditetapkan fungsi klik juga. Dapat berguna ketika acara klik pada objek induk EG. Acara klik pada baris tabel, dan Anda membutuhkan sel yang diklik
sumber
Anda dapat mencoba menggunakan:
sumber
ini bekerja dengan sebagian besar jenis elemen:
sumber
Dalam hal penangan acara yang didelegasikan, di mana Anda mungkin memiliki sesuatu seperti ini:
dan kode JS Anda seperti itu:
Anda kemungkinan besar akan menemukan itemId itu
undefined
, karena konten LI dibungkus dengan a<span>
, yang berarti<span>
mungkin akan menjadi target acara. Anda dapat menyiasatinya dengan cek kecil, seperti:Atau, jika Anda lebih suka memaksimalkan keterbacaan (dan juga menghindari pengulangan panggilan pembungkus jQuery yang tidak perlu):
Saat menggunakan delegasi acara,
.is()
metode ini sangat berharga untuk memverifikasi bahwa target acara Anda (antara lain) sebenarnya adalah apa yang Anda inginkan. Gunakan.closest(selector)
untuk mencari pohon DOM, dan gunakan.find(selector)
(umumnya ditambah dengan.first()
, seperti pada.find(selector).first()
) untuk mencari ke bawah. Anda tidak perlu menggunakan.first()
saat menggunakan.closest()
, karena hanya mengembalikan elemen leluhur yang cocok pertama, sementara.find()
mengembalikan semua keturunan yang cocok.sumber
Gunakan bisa Gunakan .pada acara
sumber
Ini berfungsi pada
z-index
parameter acara yang lebih tinggi daripada yang disebutkan dalam jawaban di atas:Dengan cara ini Anda akan selalu mendapatkan
id
elemen (dalam contoh inili
). Juga ketika diklik pada elemen anak dari induk ..sumber
Bekerja JSFiddle di sini .
sumber
Cukup gunakan
this
referensiatau
sumber
id
dari elemen tempatclick()
ditugaskan. Jika Anda perlu mentransfer lebih banyak data ke metode itu, Anda perludata-some-id="<?php $someId; ?>"
dan kemudian Anda dapat `$ (ini). Data (" some-id ") untuk mengambilnya.this.element.attr("id")
berfungsi dengan baik di IE8.sumber
Kedua pekerjaan ini,
dan
sumber
sumber
Anda dapat menggunakan fungsi untuk mendapatkan id dan nilai untuk item yang diubah (dalam contoh saya, saya telah menggunakan tag Pilih.
sumber
Saya bekerja dengan
Saya mencoba mencari
event
seperti yang dijelaskan di atas, tetapi ketika fungsi permintaan menyala sepertinya tidak tersedia. Saya digunakanthis.element.attr("id")
untuk mendapatkan ID elemen sebagai gantinya, dan tampaknya berfungsi dengan baik.sumber
Dalam kasus Angular 7.x Anda bisa mendapatkan elemen asli dan id atau propertinya.
html:
sumber