我正在尝试检查event.target.nodeName,如下所示:
$("input").click(function(e){
if(e.target.nodeName == "LABEL") {
alert('label click');
e.preventDefault();
} else {
alert($(this).attr('checked') ? 'checked': 'unchecked');
}
});
但名称永远不等于标签?我做错了什么?
快速jsfiddle
答案 0 :(得分:5)
您应该选择label
(父)元素。目前,点击处理程序的唯一目标是输入元素:
$("label").click(function(e){
// ...
})
答案 1 :(得分:2)
我认为这不起作用的原因是因为只有在点击输入时才会运行:
if(e.target.nodeName == "LABEL") {
答案 2 :(得分:1)
您根本没有选择标签。首先选择标签,然后重试:
你在这里遇到错误的元素..
$('label').on('click', function(e) {
// Your logic here
});
而不是点击输入。
确保使用.on()
委派活动。