使用jQuery获取元素类型


308

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

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

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

给定一个带有触发类的下拉列表,旁边有一个按钮,在按下按钮后,我的elementType变量应返回select


你可以改写吗?元素类型是什么意思?
阿卜杜勒·穆尼姆


Answers:


558

以jQuery方式获取元素类型:

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

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

var elementType = this.previousSibling.nodeName;

检查特定的元素类型:

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

16
请记住,.prop()函数仅是在jQuery 1.6中添加的-您可能需要升级使用的版本!
xgretsch

不适用于旧的jQuery 1.3.2,因此升级至最新版本,效果很好。
Damodar Bashyal,2014年

2
这可以通过“标签名”切换到“节点名称”所提到改善这里
凯尔·斯托弗莱特

1
@KyleStoflet-看来您是对的,nodeName确实支持更多类型的元素,并且支持IE5.5不再是问题,因此在上述答案中更改tagName为没问题nodeName。两者都可以很好地适用于元素,而后者也可以适用于textnodes,attribute等。
adeneo

3
可以,但是我对prev()有点困惑,这是特定于所讨论的示例代码的。基本上,$(this).is("input");
Fanky

56

您也可以使用:

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


16

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

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

会告诉您input,但这并不能区分复选框/文本/广播。如果是输入,则可以使用

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

告诉您复选框/文本/无线电,以便您知道它是哪种控件。


9

您可以使用.is()

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

资料



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.