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.

Jamie Hartnoll
sumber
Bisakah Anda ulangi? apa yang Anda maksud dengan tipe elemen?
Abdul Munim
kemungkinan duplikat untuk menemukan jenis elemen menggunakan jQuery
Felix Kling

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
Adeneo
sumber
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
Ali
sumber
26

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

Distdev
sumber
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.

James Toomey
sumber
9

Anda bisa menggunakan .is():

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

lihat sumber

Mohammed Sufian
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

Mike Rifgin
sumber