JQuery ile öğe türünü alma


308

JQuery kullanarak, jQuery ile bir elemanın türünü bulmak mümkün müdür? Örneğin, öğe div, span, select veya input mu?

Örneğin, jQuery ile açılan bir listeye değerler yüklemeye çalışıyorum, ancak aynı komut dosyası radyo düğme kümesi içine kod üretebilir, gibi bir şey oluşturabilir miyim:

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

Tetikleyici sınıfının yanında düğmeli bir açılır liste verildiğinde , elementTypedeğişkenim selectbasılan düğmeye geri dönmelidir .


Yeniden ifade edebilir misiniz? eleman tipine göre ne demek istiyorsun?
Abdul Munim


Yanıtlar:


558

Öğe türü jQuery yolunu alma:

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

aynısını jQuery olmadan yapmak

var elementType = this.previousSibling.nodeName;

Belirli eleman tipinin kontrol edilmesi:

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

16
Yalnızca .prop () işlevinin yalnızca jQuery 1.6'ya eklendiğini unutmayın - kullandığınız sürümü yükseltmeniz gerekebilir!
xgretsch

Eski jQuery 1.3.2 ile çalışmadı, bu yüzden en son yükseltilmiş ve iyi çalıştı.
Damodar Bashyal

2
Bu, 'tagName' öğesini burada belirtildiği gibi 'nodeName' olarak değiştirerek geliştirilebilir .
Kyle Stoflet

1
@KyleStoflet - bu haklısın görünüyor nodeNameelemanlarının desteği daha fazla türde yapar ve ben değişen hiçbir sorunları görmek böylece IE5.5, artık bir sorun olmamalıdır destek tagNameiçin nodeNameyukarıdaki cevap. Her ikisi de elemanlar için iyi çalışır ve ikincisi de metin düğümleri, öznitelikler vb.
adeneo

3
Çalışır ama söz konusu örnek kod için özel olan prev () tarafından biraz karıştı. Temel olarak,$(this).is("input");
Fanky

56

ayrıca kullanabilirsiniz:

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

26

tagNameözelliği ve attr('type')girdiler için kullanmalısınız


Bir örnek bu yorumu daha da güçlendirecektir.
Justapigeon

16

Distdev'in belirttiği gibi, yine de giriş türünü farklılaştırmanız gerekir. Demek ki,

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

size söyleyecektir input, ancak bu onay kutusu / metin / radyo arasında ayrım yapmaz. Bu bir girdi ise,

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

onay kutusunu / metin / radyoyu söylemek için ne tür bir kontrol olduğunu biliyorsunuz.


9

şunları kullanabilirsiniz .is():

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

bkz kaynağı



3

Nodename'i tagName üzerinde kullanın:

nodeName, tagName öğesinin tüm işlevlerini ve birkaçını daha içerir. Bu nedenle nodeName her zaman daha iyi bir seçimdir.

bkz. DOM Core

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.