4

我正在尝试检查 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

4

3 回答 3

5

您应该选择label( parent ) 元素。目前,您的点击处理程序的唯一目标是输入元素:

$("label").click(function(e){
  // ...
})

http://jsfiddle.net/j7nSq/

于 2012-09-24T21:43:07.673 回答
2

我认为这不起作用的原因是因为它只会在您单击输入时运行:

  if(e.target.nodeName == "LABEL") {
于 2012-09-24T21:47:01.893 回答
1

您根本没有选择标签。先选择标签,然后重试:

你在这里打错了元素..

$('label').on('click', function(e) {
    // Your logic here

});

而不是点击输入。

确保您使用.on().

于 2012-09-24T21:45:27.297 回答