Jquery div onclick中断儿童无线电检查行为
我折叠一些div,让用户展开它们并选择radio/复选框。 我有这段代码和一个简单的jquery脚本。问题是单选按钮检查的行为被其父div的onclick处理程序破坏了。您知道如何修复它吗Jquery div onclick中断儿童无线电检查行为,jquery,radio,checked,Jquery,Radio,Checked,我折叠一些div,让用户展开它们并选择radio/复选框。 我有这段代码和一个简单的jquery脚本。问题是单选按钮检查的行为被其父div的onclick处理程序破坏了。您知道如何修复它吗 <div class="tree"> <div class="parent">Item <div class="parent">ParentItem <div>
<div class="tree">
<div class="parent">Item
<div class="parent">ParentItem
<div>
<input type="radio" name="_gen" value="a"></input>LeafItem a
</div>
<div>
<input type="radio" name="_gen" value="b"></input>LeafItem b
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
$('div.tree div:has(div)').addClass('parent');
$('div.tree div').click(function() {
var o = $(this);
o.children('div').toggle();
o.children($(':radio')).attr('checked', true);
o.filter('.parent').toggleClass('expanded');
return false;
});
});
</script>
项目
父项
项目a
b项
$(函数(){
$('div.tree div:has(div)').addClass('parent');
$('div.tree div')。单击(函数(){
var o=$(本);
o、 children('div')。toggle();
o、 children($(':radio')).attr('checked',true);
o、 过滤器('.parent').toggleClass('expanded');
返回false;
});
});
不确定您在这里尝试做什么,但停止输入上的传播将通过在更高元素上注册鼠标来解决问题:
$(function() {
$('div.tree div:has(div)').addClass('parent');
$('div.tree div').click(function() {
var o = $(this);
o.children('div').toggle();
o.children($(':radio')).attr('checked', true);
o.filter('.parent').toggleClass('expanded');
return false;
});
$('input[type="radio"]').on('click', function(e) {
e.stopPropagation();
});
});
此外,输入标记是自动关闭的,不需要关闭?我认为这样更好:
$('div.tree div:has(div)').addClass('parent');
$('div.tree div').click(function( e ) {
if ( !$(e.target).hasClass("parent") ) {
return;
}
var o = $(this);
o.children('div').toggle();
o.children($(':radio')).attr('checked', true);
o.filter('.parent').toggleClass('expanded');
return false;
});
这样,您只需创建一个事件,然后检查该事件中的目标,看看它是否有一个名为
的类代码>行。