使用jQuery获取元素类型

使用jQuery获取元素类型,jquery,element,Jquery,Element,是否可以使用jQuery通过jQuery查找元素的类型?例如,元素是div、span、select还是input 例如,如果我尝试使用jQuery将值加载到下拉列表中,但同一脚本可以将代码生成到一组单选按钮中,我是否可以创建如下内容: $('.trigger').live('click', function () { var elementType = $(this).prev().attr(WHAT IS IT); }); 给定一个下拉列表,该列表旁边有一个按钮,该按钮带有触发器类,我

是否可以使用jQuery通过jQuery查找元素的类型?例如,元素是div、span、select还是input

例如,如果我尝试使用jQuery将值加载到下拉列表中,但同一脚本可以将代码生成到一组单选按钮中,我是否可以创建如下内容:

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

给定一个下拉列表,该列表旁边有一个按钮,该按钮带有触发器类,我的
元素类型
变量在按下按钮时应返回
选择

您应使用
标记名
属性和
属性('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始终是更好的选择


请参见Distdev提到的,您仍然需要区分输入类型。就是说,

$(this).prev().prop('tagName');
将告诉您
输入
,但这并不区分复选框/文本/收音机。如果它是一个输入,那么您可以使用

$('#elementId').attr('type');
告诉您复选框/text/radio,以便您知道它是什么类型的控件。

您可以使用
.is()


请参见

您能重新措辞吗?元素类型是什么意思?可能重复的可能重复的只是记住.prop()函数只是在jQuery 1.6中添加的-您可能需要升级您正在使用的版本!如前所述,将“标记名”切换到“节点名”可以改善这一点。@KyleStoflet-似乎你是对的,
nodeName
确实支持更多类型的元素,支持IE5.5应该不再是问题,因此在上面的回答中,我认为将
标记名
更改为
nodeName
没有问题。这两种方法对元素都很有效,而后者也适用于textnodes、attributes等。虽然有效,但我对prev()有点困惑,它是所讨论的示例代码的特定代码。基本上,
$(this).is(“输入”)
@Fanky-没错,OP特别要求前面的元素,因此
prev()
调用。答案的其余部分适用于可能需要知道标记类型或检查标记名等的任何其他情况。一个示例将使此注释更加有力。
  $( "ul" ).click(function( event ) {
      var target = $( event.target );
      if ( target.is( "li" ) ) {
         target.css( "background-color", "red" );
      }
  });