2011-06-14 52 views
3

我看到Firefox 4.0.1中的事件傳播似乎沒有按照我期望的方式工作。比方說,我有以下HTML:<button>元素不在Firefox中傳播事件?

<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是否正確傳播按鈕點擊事件?

回答

2

我會說Firefox實際上就在這裏。根據W3C's validation tool<input>不允許在<button>之內。

此外,checked="true"應該是checked="checked",這也可能導致問題(或可能導致其他情況下的問題)。

+0

我懷疑是這樣。問題是一些庫正在熱切地使用jQueryUI按鈕。我正在看你[DataTables ColVis](http://datatables.net/release-datatables/extras/ColVis/) – devoid 2011-06-14 17:56:22