我正在编写一个jQuery函数,可以选择/取消选中所有复选框。目前在我看来,最好的方法是使用.toggle()
方法。不幸的是,我无缘无故地得到了奇怪的效果。一旦加载DOM,所选元素就会消失。我发现唯一可行的解决方案是使用.show()/ .fadeIn()函数。我使用.click()
事件和几个if语句解决了这个问题(如果我可以使用.toggle();
,这似乎是不必要的)。我没有在浏览器开发人员的工具控制台中收到任何错误或警告。加载DOM后,第一个.toggle()函数将触发。这是我正在使用的代码:
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 :(得分:1)
好吧,toggle函数在JQuery 1.8中已弃用,在1.9版本中已删除。 JQuery有一个名为toggle的动画方法来改变元素的可见性。
选择和取消选中所有复选框是一项常见任务。我这样做:
$('.check_all').on('click', function () {
$('.commom').prop('checked', function (i, val) {
return !val;
});
});
答案 1 :(得分:0)
我相信.toggle()会更改要显示的元素的css:none。
你说第一个.toggle()会在DOM加载时触发,并且元素会在那时消失。这可以解释这种行为: