使用jQuery获取元素类型

Jam*_*oll 294 jquery element

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

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

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

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

ade*_*neo 541

获取元素类型的jQuery方式:

var elementType = $(this).prev().prop('nodeName');
Run Code Online (Sandbox Code Playgroud)

没有jQuery就做同样的事情

var elementType = this.previousSibling.nodeName;
Run Code Online (Sandbox Code Playgroud)

检查特定元素类型:

var is_element_input = $(this).prev().is("input"); //true or false
Run Code Online (Sandbox Code Playgroud)

  • 请记住,.prop()函数仅在jQuery 1.6中添加 - 您可能需要升级您正在使用的版本! (13认同)
  • "检查特定元素类型"的+1 (3认同)
  • 这可以通过将'tagName'切换为'nodeName'来改进,如[here](http://stackoverflow.com/questions/4878484/difference-between-tagname-and-nodename)所述. (2认同)
  • 可以,但是我对prev()有点困惑,这是特定于所讨论的示例代码的。基本上,$(this).is(“ input”);` (2认同)

Ali*_*Ali 52

你也可以使用:

$("#elementId").get(0).tagName
Run Code Online (Sandbox Code Playgroud)


Dis*_*dev 26

你应该使用tagName财产和attr('type')投入

  • 举个例子会让这个评论更有说服力。 (2认同)

Jam*_*mey 16

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

$(this).prev().prop('tagName');
Run Code Online (Sandbox Code Playgroud)

会告诉你input,但这不区分复选框/文本/收音机.如果是输入,则可以使用

$('#elementId').attr('type');
Run Code Online (Sandbox Code Playgroud)

告诉你复选框/文本/广播,所以你知道它是什么样的控制.


Moh*_*ian 9

你可以使用.is():

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

来源