jquery 通过event.target,我怎么知道它是复选框还是收音机?

bweufnob  于 2022-11-03  发布在  jQuery
关注(0)|答案(8)|浏览(177)

在我的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"
    }

    });

我如何知道我点击了复选框或单选按钮?

2hh7jdfx

2hh7jdfx1#

.nodeName给出了所使用的html标记,因此您必须使用.type来获取其中的节点类型。
试试这个:

console.log(event.target.type);

Demo

50few1ms

50few1ms2#

对于那些寻找纯JavaScript方式的人来说,它是event.target.tagName
该属性是元素类型的大写字符串,如“A”、“UL”、“LI”等。

wbgh16ku

wbgh16ku3#

console.log($(event.target).is(':radio'));
console.log($(event.target).is('[type="radio"]'));
aurhwmvo

aurhwmvo4#

您可以使用event.target.getAttribute('type')代替

enxuqcxy

enxuqcxy5#

尝试使用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
});
cbjzeqam

cbjzeqam6#

对于jQuery的节点类型,可以用途:

  • $(事件.目标).属性(“类型”)
  • event.target.请键入**
$("SELECTOR").click(function (event) {
var idEventTarget = $(event.target).attr('id');
console.log($(event.target).attr('type'));
console.log(event.target.type);
});
agxfikkp

agxfikkp7#

如果将事件传递给XMLHttpRequest的progress或error事件处理程序,或者IDB成功或error事件处理程序,则目标将是XMLHttpRequest或(IDB Request?)。不会有getAttribute或nodeName属性。
虽然肯定有更好的方法,但这将获得事件的目标名称:如果ev.target。
例如,在http请求的情况下,它返回“XMLHttpRequest”。

相关问题