2012-03-13 120 views
0

我想做一個複選框檢查時,我不僅點擊複選框,而且它的容器。我面臨的問題是,當我檢查複選框,它發射了兩次,因爲它也點擊了容器。我想出了以下解決方案似乎工作正常,但我有一種感覺,有一種更簡單的方法來做到這一點,我期待着學會真正爲什麼簡短和緊湊的JavaScript,所以任何建議將有所幫助:)JavaScript的複選框容器 - 有沒有更簡單的方法來寫這

http://jsfiddle.net/masedesign/8q5TQ/

回答

2
$(function(){ 
    $('td.cell input').click(function(e){ 
     e.stopPropagation(); 
    }); 

    $('td.cell').click(function(){ 
     $(this).find('input').click(); 
    }); 
});​ 

e.stopPropagation()方法阻止事件冒泡。

0

只是爲了好玩我試圖達到同樣的效果,而不使用Javascript:如果你有興趣在純CSS的解決方案只能在較新的瀏覽器工作(它依賴於:checked僞類),看看這個小提琴:http://jsfiddle.net/g6Sx7/2/(但如果你」與爵士小提琴回退:http://jsfiddle.net/g6Sx7/7/這段代碼應該可以正常工作也IE6,但這裏的問題是關於CSS支持(相鄰兄弟運營商再有興趣,我可以用一個js回退舊IE)

編輯改進在IE6上不支持+):整個效果在那裏不起作用,但無論如何,在該瀏覽器中不能有盒子陰影......所以我認爲這不是一個很大的問題。

+0

這是有趣的..可以支持所有的方式到IE6。這些將以每秒大約1,000個用戶的視角查看,因此它需要堅如磐石:) – stewart715 2012-03-13 13:48:42

+0

請參閱我的更新... – fcalderan 2012-03-13 13:51:12

0

如果您在複選框被選中時沒有執行任何其他任務,即您寫的js只是爲了使框可點擊,那麼我會建議採用CSS方法而不是JS。

這裏的工作示例http://jsfiddle.net/8q5TQ/6/

注:本作品在IE7/8/9 FF(最新安裝在我的機器上)和Chrome(最新安裝在我的機器上)

更新:(看完後烏爾評論)我沒有IE 6(對不起),但嘗試了古怪的模式,並工作正常。希望這有助於:)

相關問題