Jquery toggleClass函数工作不正常

Jquery toggleClass函数工作不正常,jquery,html,Jquery,Html,我的功能不正常。有时有效有时无效 <head> <script type="text/javascript" src="jquery-1.7.2.js"></script> <script type="text/javascript"> $(function(){ $('label').click(function(){ $(this).toggleClass('jaja papa') } ) })

我的功能不正常。有时有效有时无效

<head>
<script type="text/javascript" src="jquery-1.7.2.js"></script>

<script type="text/javascript">


$(function(){

    $('label').click(function(){
    $(this).toggleClass('jaja papa')
    }   )


    })

</script>

</head>

<body>

<label class="jaja">
<input type="checkbox" />
click
</label>

</body>

如果你想在这两个类之间切换

$('label').click(function(){
    $(this).toggleClass('jaja').toggleClass('papa');
    });

应该这样做

当您单击标签时,您也在单击复选框,因为标签就是这样做的。复选框的单击事件依次出现在标签上。因此,标签的点击处理程序被触发两次,类被切换两次,实际上什么也不做

您必须跟踪单击处理程序被调用的次数,并且只在第一次执行操作:


一个可能的解决方案是,稍微更改标记以获得更好的IMHO

如果要更改标签,使其具有复选框和带有文本的范围,并在其中应用您的样式,即:

<label>
    <input type="checkbox">
    <span class="papa">Test</span>
</label>
实例:


这里的优点是,您有更多可寻址的HTML,您可以从标签内的复选框中分别访问文本。此外,单击文本的语义仍会选中/取消选中复选框。

完全是。我想交换类,但它在标签上不能正常工作。当我使用p标记而不是标签时,它工作正常。我看不到代码段中的任何错误,为什么它不能正常工作。隔离工作正常:请使用输入类型复选框再次检查它。文档说允许使用空格分隔的类名。虽然正确,没有理由将它们分开。允许使用分开的类名,但这样会同时切换这两个类名once@pimvdb以下是一些文字说明的规范。将.toggleClass“bounce spin”应用于和之间的相同选项。在页面中间的某个地方,但是当我使用SPAN而不是标签时,它为什么工作fine@amit:是的,因为跨度只是一个元素。标签还有一个附加属性,即单击标签中的元素并重试。
<label>
    <input type="checkbox">
    <span class="papa">Test</span>
</label>
$('label>:checkbox').click(function(){
    $(this).next('span').toggleClass('jaja papa')
});