2012-06-13 81 views

回答

2

事件冒起來,所以你可以附加一個onchange處理程序到div並使用e.target來獲取更改的複選框。下面是一個簡單的例子:

HTML:

<div id="checkbox-container"> 
    <input type="checkbox" name="one" /> 
    <input type="checkbox" name="two" /> 
    <input type="checkbox" name="three" /> 
    <input type="checkbox" name="pizza" /> 
</div> 

的Javascript:

document.getElementById('checkbox-container').onchange = function(e){ 
    alert(e.target.name); 
}​ 

And here's a JSFiddle

+0

更改事件可能不會在所有瀏覽器中冒泡,更好地使用click事件。以上在支持IE事件模型的瀏覽器中也會失敗,'e'將會是未定義的。 – RobG

+0

這不僅僅是IE瀏覽器,直到最近,改變事件在大多數瀏覽器中都沒有起泡。 HTML5已經改變了很多這樣的事情,你需要爲超過12個月的瀏覽器編碼。 – RobG

1

基於ASCII時的回答,您可以使用事件代表團。但是,請注意,更改事件在所有瀏覽器中都不會冒泡,並且您還必須支持IE事件模型,因此請使用單擊事件並過濾掉不需要的元素(或添加備用響應):

<div id="checkbox-container"> 
    <input type="checkbox" name="one"> 
    <input type="checkbox" name="two"> 
    <input type="checkbox" name="three"> 
    <input type="checkbox" name="pizza"> 
</div> 

<script type="text/javascript"> 

(function() { 

    var container = document.getElementById('checkbox-container'); 

    if (container) { 
    container.onclick = function(evt) { 
     evt = evt || window.event; 
     var el = evt.target || evt.srcElement; 

     if (el && el.nodeType == 1 && el.type == 'checkbox') { 
     alert(el.name + ' is ' + (el.checked? '':'not') + ' checked'); 
     } 
    } 
    } 
}()) 

</script> 

請注意,該腳本必須位於容器元素下方。就在結束標籤正好之前。

+0

+1我在編輯我的答案,但你打我寫一個更好的跨瀏覽器答案。 – Paulpro

相關問題