2012-03-13 118 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(对不起),但尝试了古怪的模式,并工作正常。希望这有助于:)

相关问题