JQuery .show()方法在.hide之后不起作用。
JQuery .show()方法在.hide之后不起作用。
我正在使用一个名为"adminCheckBox"的JQuery脚本,根据复选框是否选中来显示或隐藏屏幕上的各种对象。
隐藏功能正常工作。但是,在元素被隐藏后,当我再次点击复选框时,元素不会再次出现。是否有任何关于这个问题的想法?谢谢。
$(document).ready(function(){ $(".adminCheckbox").click(function(){ if(!document.getElementsByClassName("adminCheckBox").checked){ $(".deleteImageButton").hide(500); $(".addHeading").hide(500); $(".deleteHeadingButton").hide(500); $(".fileUpload").hide(500); $(".fileUploadSubmit").hide(500); }else{ $(".deleteImageButton").show(); $(".addHeading").show(); $(".deleteHeadingButton").show(); $(".fileUpload").show(); $(".fileUploadSubmit").show(); } }); });
以下是相关复选框的HTML代码。
管理员控制
JQuery .show()方法在.hide()之后不起作用的原因是使用了错误的事件处理器。解决方法是使用.change()事件处理器代替.click(),并使用.toggle()方法来隐藏和显示按钮。
根据jQuery API的说明,change事件是在元素的值改变时发送的。该事件仅限于元素、
以下是解决方法的示例代码:
$(document).ready(function () { $('.adminCheckbox').on('change', function () { $(".deleteImageButton, .addHeading, .deleteHeadingButton, .fileUpload, .fileUploadSubmit").toggle(500); }); });
你可以在下面的链接中查看代码的演示效果:
[JSFiddle Demo](http://jsfiddle.net/6CETx/)
JQuery .show()方法在.hide()方法之后不起作用的原因是一个很大的jQuery的bug。为了解决这个问题,可以使用.toggle()方法来代替.show()和.hide()方法。代码示例如下:
$(".adminCheckbox").click(function(){ $(".deleteImageButton, .addHeading, .deleteHeadingButton, .fileUpload, .fileUploadSubmit").toggle(); });
此外,还可以在.toggle()方法中设置一个数字参数来实现动画效果,例如.toggle(500)。这种方法是有效的解决方案,但仍然无法解释为什么在.hide()之后不能使用.show()方法。这个问题实际上是一个真正的疑问,因为我自己在jQuery中也遇到了完全相同的问题,所以我对为什么在.hide()之后不能使用.show()方法的原因非常感兴趣。