<button>元素不在Firefox中传播事件?</button>

时间:2011-06-14 17:27:23

标签: javascript jquery html firefox javascript-events

我在Firefox 4.0.1中看到问题,其中事件传播似乎没有像我期望的那样工作。假设我有以下HTML:

<button>
    <input id='cb' type='checkbox' checked='true'>
    <span> foo</span>
</button>

和javascript:

$(document).ready(function() {
    $("button").click(function(e) {
        console.log('got click: button');
        return true;
    });
    $("#cb").click(function(e) {
        console.log('got click: checkbox');
        return true;
    });
});

请参阅:http://jsfiddle.net/H7fp3/10/

这与我在Chrome(12)和Safari(5.0.5)中所期望的一样:

  • 点击复选框生成:got click: checkbox,然后got click: button
  • 单独单击按钮,生成:got click: button

但是,在Firefox(4.0.1)中,两者都生成got click: button,并且不会更改复选框已检查属性。我在这里错过了什么吗? Firefox是否正确传播按钮点击事件?

1 个答案:

答案 0 :(得分:2)

我认为Firefox实际上就在这里。根据{{​​3}},<input>内不允许<button>

此外,checked="true"应为checked="checked",这可能也会导致问题(或可能导致其他情况下出现问题)。