Jquery toggleClass未按预期工作:函数调用了两次

Jquery toggleClass未按预期工作:函数调用了两次,jquery,toggleclass,Jquery,Toggleclass,ToggleClass未给出预期结果,因为函数执行了两次 HTML: 大猩猩 羔羊肉 老虎 jQuery: $(document).ready(function(){ $('.custom-controls').find('input').each(function(){ ($(this).is(':radio')?$input_class_name="custom-radio-wrap":$input_class_name="custom-check-wrap");

ToggleClass未给出预期结果,因为函数执行了两次

HTML:


大猩猩
羔羊肉
老虎
jQuery:

$(document).ready(function(){
    $('.custom-controls').find('input').each(function(){
        ($(this).is(':radio')?$input_class_name="custom-radio-wrap":$input_class_name="custom-check-wrap");     
        $(this).parents('label').wrapInner(('<span class="' + $input_class_name + '"></span>'));                    
    });
    $('.custom-controls').delegate("span", "click", function () {
        $(this).toggleClass('checked');     
    });
});
$(文档).ready(函数(){
$('.custom controls')。查找('input')。每个(函数(){
($(this).is(':radio')?$input\u class\u name=“自定义无线电包裹”:$input\u class\u name=“自定义检查包裹”);
$(this.parents('label').wrapInner(('');
});
$('.custom controls')。委托(“span”,“click”,函数(){
$(this.toggleClass('checked');
});
});
尝试使用

$(document).on('click', 'span', function(e){
试用

$(document).on('click', 'span', function(e){

这是由事件冒泡引起的,只需在其后面添加一个
returnfalse

$('.custom-controls').delegate("span", "click", function () {
    $(this).toggleClass('checked');
    return false; 
});

OR

$('.custom-controls').delegate("span", "click", function (e) {
    $(this).toggleClass('checked');
    e.preventDefault();                                                    
});

这是由事件冒泡引起的,只需在其后面添加一个
returnfalse

$('.custom-controls').delegate("span", "click", function () {
    $(this).toggleClass('checked');
    return false; 
});

OR

$('.custom-controls').delegate("span", "click", function (e) {
    $(this).toggleClass('checked');
    e.preventDefault();                                                    
});

您的最终代码将如下所示:

$(文档).ready(函数(){
$('.custom controls')。查找('input')。每个(函数(){
($(this).is(':radio')?$input\u class\u name=“自定义无线电包裹”:$input\u class\u name=“自定义检查包裹”);
$(this.parents('label').wrapInner(('');
});
$('.custom controls')。委托(“span”,“click”,函数(e){
$(this.toggleClass('checked');
var checked_status=$(this).find(“input”).prop(“checked”)?0:1;//对于选中的输入复选框。。
$(this.find(“input”).prop(“checked”,checked_状态);
e、 预防默认值();
});
});
。自定义标签{
显示:内联块;
边缘底部:.8em;
光标:指针;
}
.定制收音机,
.海关检查{
垂直对齐:中间对齐;
显示:内联块;
位置:相对位置;
顶部:-.15em;
边缘:0.4em;
宽度:22px;
高度:22px;
}
标签{
显示:块;
}
.自定义检查换行输入{
/*左:-9999px*/
位置:绝对位置;
}
.定制支票换行{
背景:#CCC;
左侧填充:30px;
最小高度:22px;
显示:块;
}
.custom-check-wrap.checked{
背景:绿色;
}
.海关检查{
背景:url(images/chk uncheck.png)不重复;
}
.定制支票{
背景:url(images/chk checked.png)不重复;
}
.定制收音机{
背景:url(images/radio uncheck.png)不重复;
}
.定制收音机{
背景:url(images/radio checked.png)不重复;
}
.定制检查{
背景:url(images/chk uncheck.png)不重复;
}
.custom-check.checked.focus{
背景:url(images/chk checked.png)不重复;
}
.定制收音机{
背景:url(images/radio uncheck.png)不重复;
}
.定制收音机.已检查.焦点{
背景:url(images/radio checked.png)不重复;
}

大猩猩

羔羊
老虎

您的最终代码将如下

$(文档).ready(函数(){
$('.custom controls')。查找('input')。每个(函数(){
($(this).is(':radio')?$input\u class\u name=“自定义无线电包裹”:$input\u class\u name=“自定义检查包裹”);
$(this.parents('label').wrapInner(('');
});
$('.custom controls')。委托(“span”,“click”,函数(e){
$(this.toggleClass('checked');
var checked_status=$(this).find(“input”).prop(“checked”)?0:1;//对于选中的输入复选框。。
$(this.find(“input”).prop(“checked”,checked_状态);
e、 预防默认值();
});
});
。自定义标签{
显示:内联块;
边缘底部:.8em;
光标:指针;
}
.定制收音机,
.海关检查{
垂直对齐:中间对齐;
显示:内联块;
位置:相对位置;
顶部:-.15em;
边缘:0.4em;
宽度:22px;
高度:22px;
}
标签{
显示:块;
}
.自定义检查换行输入{
/*左:-9999px*/
位置:绝对位置;
}
.定制支票换行{
背景:#CCC;
左侧填充:30px;
最小高度:22px;
显示:块;
}
.custom-check-wrap.checked{
背景:绿色;
}
.海关检查{
背景:url(images/chk uncheck.png)不重复;
}
.定制支票{
背景:url(images/chk checked.png)不重复;
}
.定制收音机{
背景:url(images/radio uncheck.png)不重复;
}
.定制收音机{
背景:url(images/radio checked.png)不重复;
}
.定制检查{
背景:url(images/chk uncheck.png)不重复;
}
.custom-check.checked.focus{
背景:url(images/chk checked.png)不重复;
}
.定制收音机{
背景:url(images/radio uncheck.png)不重复;
}
.定制收音机.已检查.焦点{
背景:url(images/radio checked.png)不重复;
}

大猩猩

羔羊
老虎