jquery 隐藏在 .live 中有效,在 .ready 中失败
下面的两个函数(除了应该运行的时间之外,其他都是相同的)都在 $(document).ready
中。 .live
版本按预期工作,在选中选择器时隐藏 2 个 div,在取消选中时显示它们。 .ready
版本不执行任何操作,但应该在加载页面时隐藏指定的 div。默认情况下选中“全天”复选框(用于测试目的)。
.ready
版本有什么问题?
$("input[name='allday']").ready(function(){ //OnLoad verify if allday is checked to disallow time entry
if($(this).is(":checked")){ //There is a check
$("#evst").hide(); //hide time entry
$("#evet").hide();
} else {
$("#evst").show();
$("#evet").show();
};
});
$("input[name='allday']").live("click", function(){ //OnClick verify if allday is checked to disallow time entry
if($(this).is(":checked")){ //There is a check
$("#evst").slideUp(); //hide time entry
$("#evet").slideUp();
} else {
$("#evst").slideDown();
$("#evet").slideDown();
};
});
Both of the below functions (which are identical except for when they should run) are in $(document).ready
. The .live
version works as expected, hiding 2 divs when the selector is checked and showing them when it is unchecked. The .ready
version does nothing but it is supposed to hide the specified divs when the page is loaded. The checkbox 'allday' is checked by default (for testing purposes).
What is wrong with the .ready
version?
$("input[name='allday']").ready(function(){ //OnLoad verify if allday is checked to disallow time entry
if($(this).is(":checked")){ //There is a check
$("#evst").hide(); //hide time entry
$("#evet").hide();
} else {
$("#evst").show();
$("#evet").show();
};
});
$("input[name='allday']").live("click", function(){ //OnClick verify if allday is checked to disallow time entry
if($(this).is(":checked")){ //There is a check
$("#evst").slideUp(); //hide time entry
$("#evet").slideUp();
} else {
$("#evst").slideDown();
$("#evet").slideDown();
};
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您使用 .ready 时
$(this)
将不会引用正确的元素 - 将其更改为$("input[name='allday']")
When you use .ready
$(this)
won't refer to the right element - change it to$("input[name='allday']")