Dapatkan tipe elemen dengan jQuery


308

Apakah mungkin, menggunakan jQuery, untuk mengetahui jenis elemen dengan jQuery? Misalnya, apakah elemen div, span, pilih, atau input?

Misalnya, jika saya mencoba memuat nilai ke daftar drop-down dengan jQuery, tetapi skrip yang sama dapat menghasilkan kode ke set tombol radio, dapatkah saya membuat sesuatu seperti:

$('.trigger').live('click', function () {
   var elementType = $(this).prev().attr(WHAT IS IT);
});

Diberikan daftar drop-down dengan tombol di sebelahnya dengan kelas pemicu , elementTypevariabel saya harus kembali selectsetelah tombol ditekan.


Bisakah Anda ulangi? apa yang Anda maksud dengan tipe elemen?
Abdul Munim


Jawaban:


558

Mendapatkan elemen ketik dengan cara jQuery:

var elementType = $(this).prev().prop('nodeName');

melakukan hal yang sama tanpa jQuery

var elementType = this.previousSibling.nodeName;

Memeriksa jenis elemen tertentu:

var is_element_input = $(this).prev().is("input"); //true or false

16
Ingat saja bahwa fungsi .prop () hanya ditambahkan di jQuery 1.6 - Anda mungkin perlu meningkatkan versi yang Anda gunakan!
xgretsch

Tidak bekerja dengan jQuery 1.3.2 lama, jadi ditingkatkan ke terbaru dan bekerja dengan baik.
Damodar Bashyal

2
Ini dapat ditingkatkan dengan mengganti 'tagName' ke 'nodeName' seperti yang disebutkan di sini .
Kyle Stoflet

1
@KyleStoflet - tampaknya Anda benar sedang, nodeNametidak mendukung lebih banyak jenis elemen, dan mendukung IE 5.5 seharusnya tidak menjadi masalah lagi, jadi saya tidak melihat masalah dengan mengubah tagNameke nodeNamedalam jawaban di atas. Keduanya akan bekerja dengan baik untuk elemen, dan yang terakhir akan bekerja pada textnodes, atribut dll.
adeneo

3
Bekerja tapi saya agak bingung dengan prev (), yang khusus untuk kode contoh yang dimaksud. Pada dasarnya,$(this).is("input");
Fanky

56

Anda juga dapat menggunakan:

$("#elementId").get(0).tagName

26

Anda harus menggunakan tagNameproperti dan attr('type')untuk input


Contoh akan membuat komentar ini lebih kuat.
Justapigeon

16

Seperti yang disinggung oleh Distdev, Anda masih perlu membedakan jenis input. Artinya,

$(this).prev().prop('tagName');

akan memberi tahu Anda input, tetapi itu tidak membedakan antara kotak centang / teks / radio. Jika ini merupakan input, Anda dapat menggunakannya

$('#elementId').attr('type');

untuk memberi tahu Anda kotak centang / teks / radio, sehingga Anda tahu jenis kontrolnya.


9

Anda bisa menggunakan .is():

  $( "ul" ).click(function( event ) {
      var target = $( event.target );
      if ( target.is( "li" ) ) {
         target.css( "background-color", "red" );
      }
  });

lihat sumber



3

Gunakan Nodename over tagName:

nodeName berisi semua fungsi tagName, ditambah beberapa fungsi lainnya. Oleh karena itu nodeName selalu merupakan pilihan yang lebih baik.

lihat DOM Core

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.