是否有可能,使用jQuery,找出一个元素的类型?例如,元素是div、span、select还是input?

例如,如果我试图用jQuery将值加载到一个下拉列表中,但相同的脚本可以生成代码到一组单选按钮中,我可以创建类似于:

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

给定一个下拉列表,它旁边有一个按钮和触发器类,我的elementType变量应该在按下按钮时返回select。


你应该使用tagName属性和attr('type')作为输入


使用jQuery方法获取元素类型:

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

在没有jQuery的情况下做同样的事情

var elementType = this.previousSibling.nodeName;

检查特定的元素类型:

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

你还可以用:

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

使用get (0) .tagName。请看这个链接


使用Nodename代替tagName:

nodeName包含tagName的所有功能,还有其他一些功能。因此,nodeName总是更好的选择。

参见DOM核心


正如Distdev所提到的,您仍然需要区分输入类型。也就是说,

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

会告诉你输入,但不区分复选框/文本/单选。如果它是一个输入,那么您可以使用

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

告诉你复选框/文本/单选,这样你就知道它是什么类型的控件。


你可以使用.is():

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

看到源