正如我們所知,從DOM事件處理函數返回false
將停止事件的傳播。但是我最近發現,不同元素的行爲在這個事件上有所不同。例如,考慮以下因素:輸入類型之間的DOM/jQuery事件傳播差異
<div id="container">
<input type="checkbox" name="foo" value="1" /> Check me!
<br />
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<br />
<input type="text" size="30" />
</div>
周圍的容器都返回false click處理:
$('#container').click(function(e) {
$('#clicks').append('<span>clicked</span>');
return false;
});
內div
,我還可以點擊文本框,輸入文字,並可以仍然點擊下拉菜單來更改其值。但點擊複選框什麼也不做(實際上,這不是真的 - 它檢查框,觸發處理程序,然後取消選中它)。 jsfiddle here:http://jsfiddle.net/4ncaq/
這種行爲在瀏覽器中是一致的,所以我假定它是通過設計的。但是,這裏工作的規則究竟是什麼?我怎樣才能知道在這種情況下其他類型的元素可能會如何表現?
這並不能解釋他爲什麼不能勾選複選框,但他可以放下組合。如果點擊處理程序連接到包含複選框的div,那麼爲什麼它會影響複選框。當div點擊處理程序返回false時,事件確實已經過去了複選框嗎? – Archer 2012-03-08 15:06:54
@archer我編輯了答案來解釋默認操作。 – 2012-03-08 15:25:41
太棒了 - 謝謝:) – Archer 2012-03-08 15:27:04