Pertanyaan Mendapatkan ID dari elemen yang memicu peristiwa


Adakah cara untuk mendapatkan ID dari elemen yang mengaktifkan peristiwa?

Saya berpikir sesuatu seperti:

<html>
  <head>
    <script type="text/javascript" src="starterkit/jquery.js"></script>
    <script type="text/javascript">
      $(document).ready(function () {
        $("a").click(function () {
          var test = caller.id;
          alert(test.val());
        });
      });
    </script>
  </head>
  <body>
    <form class="item" id="aaa">
      <input class="title"></input>
    </form>
    <form class="item" id="bbb">
      <input class="title"></input>
    </form>
  </body>

</html>

Kecuali tentu saja itu var test harus berisi id "aaa", jika acara tersebut diaktifkan dari formulir pertama, dan "bbb", jika acara tersebut dipecat dari formulir kedua.


833
2017-09-07 08:09


asal


Jawaban:


Di jQuery event.target selalu mengacu pada elemen yang memicu acara, di mana 'event' adalah parameter yang diteruskan ke fungsi. http://api.jquery.com/category/events/event-object/

$(document).ready(function() {
    $("a").click(function(event) {
        alert(event.target.id);
    });
});

Perhatikan juga itu 'this' juga akan berfungsi, tetapi itu bukan objek jQuery, jadi jika Anda ingin menggunakan fungsi jQuery di atasnya maka Anda harus merujuknya sebagai '$(this)', misalnya:

$(document).ready(function() {
    $("a").click(function(event) {
        // this.append wouldn't work
        $(this).append(" Clicked");
    });
});

1138
2017-09-07 19:02



Untuk referensi, cobalah ini! Berhasil!

jQuery("classNameofDiv").click(function() {
    var contentPanelId = jQuery(this).attr("id");
    alert(contentPanelId);
});

147
2017-09-02 08:01



Meskipun disebutkan dalam posting lain, saya ingin mengeja 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 membuat saya tersandung, jadi mungkin tersandung orang lain)


78
2017-11-06 13:38



Untuk semua acara, tidak terbatas hanya jQuery yang dapat Anda gunakan

var target = event.target || event.srcElement;
var id = target.id

Dimana event.target gagal jatuh kembali event.srcElement untuk IE. Untuk memperjelas kode di atas tidak memerlukan jQuery tetapi juga berfungsi dengan jQuery.


69
2017-07-19 14:23



Kamu dapat memakai (this) untuk referensi objek yang mem-fired fungsi.

'this' adalah DOM elemen ketika Anda berada di dalam fungsi callback (dalam konteks jQuery), misalnya, dipanggil dengan metode klik, masing-masing, mengikat, dll.

Di sinilah Anda dapat mempelajari lebih lanjut: http://remysharp.com/2007/04/12/jquerys-this-demystified/


58
2017-09-07 08:12



Saya menghasilkan tabel secara dinamis dari database, menerima data di JSON dan memasukkannya ke dalam tabel. Setiap baris tabel mendapat yang unik ID, yang diperlukan untuk tindakan selanjutnya, jadi, jika DOM diubah, Anda memerlukan pendekatan yang berbeda:

$("table").delegate("tr", "click", function() {
   var id=$(this).attr('id');
   alert("ID:"+id);  
});

25
2017-09-12 14:14



Elemen yang memecat acara yang kami miliki peristiwa milik

event.currentTarget

Kita mendapatkan Node DOM objek yang ditetapkan pengendali event.


Nested nested node yang memulai proses menggelembung yang kita miliki

event.target

Objek peristiwa selalu atribut pertama pengendali event, contoh:

document.querySelector("someSelector").addEventListener(function(event){

 console.log(event.target);
 console.log(event.currentTarget);

});

Lebih lanjut tentang delegasi acara Anda dapat membaca http://maciejsikora.com/standard-events-vs-event-delegation/


14
2017-10-14 13:04