2013-12-20 71 views
0

我在写一个jQuery函数,它将选择/取消选中所有复选框。目前看起来最好的方法是使用.toggle()方法。不幸的是,我无缘无故获得了奇怪的效果。一旦DOM被加载,所选元素就会消失。我发现的唯一工作解决方案是使用.show()/。fadeIn()函数。我使用.click()事件和几个if语句解决了这个问题(如果我可以使用.toggle();,这似乎是不必要的)。我在浏览器开发人员的工具控制台中没有收到任何错误或警告。第一个.toggle()函数会在DOM加载后触发。这里是我使用的代码:加载HTML/jQuery切换()元素消失

编辑:哎呀。我发布了错误的代码。现在已经修复了。

HTML:

<input type="button" class="checkboxCheck" value="check all" disabled="disabled" /> 
<input type="button" class="addCheckbox" value="Add checkbox" /> 

的jQuery:

$('input:button.addCheckbox').click(function(){ 
    $(this).after('<br /><input type="checkbox" />'); 
    if($(this).prev().attr('disabled')=='disabled'){ 
     $(this).prev().removeAttr('disabled'); 
    }; 
}); 

$('input:button.checkboxCheck').toggle(function(){ 
    alert(0); 
},function(){ 
    alert(1); 
}); 

在我工作的这点有使用在所有的网站上没有CSS代码。

为什么会发生这种情况,以后如何避免它?

+0

拨动事件被弃用的jQuery 1.8和1.9中删除。 http://api.jquery.com/toggle-event/ – j08691

回答

1

那么,切换功能在JQuery 1.8中被弃用,并在版本1.9中被删除。 JQuery有一个名为切换的动画方法来改变元素的可见性。

选择和取消选中所有复选框是一项常见任务。我会做这样的:

$('.check_all').on('click', function() { 
    $('.commom').prop('checked', function (i, val) { 
     return !val; 
    }); 
}); 

看看这里:http://jsfiddle.net/ZzJ43/

+0

我很抱歉,这是一个小题外话,但它不会扭转复选框的价值?我想这样做(但使用不同的代码,但我喜欢你的做法),但我需要一个严格检查/取消全部检查的函数。 – user3111896

+0

你的意思是复选框的值是什么?它选择/取消选择所有的复选框,不是吗? – Ricbermo

+0

对不起,我的意思是,它颠倒了复选框的状态(选中/未选中)。 – user3111896

0

我相信.toggle()更改为元素,以显示的CSS:无。

你说第一个.toggle()会在DOM被加载时触发,并且该元素会在该点消失。这可以解释的行为:

http://api.jquery.com/toggle/