59

在我的html中:

<input type="checkbox" name="select">

<input type="radio" name="select">

由于某些逻辑原因,名称属性相同

在我的 JS

我写下面的代码:

$('input[type="checkbox"],input[type="radio"]').on("change",function(event){
    console.log(event.target.nodename);
    // on both cases it show "INPUT"
    }

    }); 

我怎么知道我点击了复选框或单选按钮?

4

7 回答 7

74

.nodeName给出html使用的标签,因此您必须使用它.type来获取那里的节点类型。

试试这个:

console.log(event.target.type);

演示

于 2013-11-15T06:10:11.143 回答
65

对于那些寻找纯 JavaScript 方式的人来说,它是event.target.tagName.

该属性是元素类型的大写字符串,如“A”、“UL”、“LI”等。

于 2017-10-12T18:07:23.150 回答
8
console.log($(event.target).is(':radio'));
console.log($(event.target).is('[type="radio"]'));
于 2013-11-15T06:02:41.727 回答
1

你可以event.target.getAttribute('type')改用

于 2013-11-15T06:02:31.680 回答
0

尝试使用attr() 之类的,

console.log($(this).attr('type'));// checkbox or radio

代码

$('input[type="checkbox"],input[type="radio"]').on("change", function (event) {
    console.log($(this).prop('tagName'));// INPUT
    console.log($(this).attr('type'));// checkbox or radio
});
于 2013-11-15T06:04:12.317 回答
0

对于带有 jQ​​uery 的节点类型,您可以使用:

  • $(event.target) .attr('type')
  • 事件.目标.类型
$("SELECTOR").click(function (event) {
var idEventTarget = $(event.target).attr('id');
console.log($(event.target).attr('type'));
console.log(event.target.type);
});
于 2018-12-24T11:13:00.487 回答
-1

您可以使用

function test(e)
{
   var eve = e || window.event;
   var ele = eve.target || eve.srcElement;

   switch(ele.getAttribute('type'))
   {
     case "radio" : //do whatever

     case "checkbox" : //do
   }

}
于 2013-11-15T06:05:40.677 回答