jQuery:检查滑块切换可见性是否不工作?
我试图使用幻灯片切换来显示登录表单,如果他们在框外单击,我希望该表单向上滑动 我一切正常,但是我的可见性检查不起作用,因此在表单容器外单击不起作用。你能找出原因吗jQuery:检查滑块切换可见性是否不工作?,jquery,Jquery,我试图使用幻灯片切换来显示登录表单,如果他们在框外单击,我希望该表单向上滑动 我一切正常,但是我的可见性检查不起作用,因此在表单容器外单击不起作用。你能找出原因吗 var loginForm = jQuery("#login .login-form"); jQuery("#login a").click(function(e) { e.preventDefault(); loginForm.slideToggle(); }); // below check isn't wor
var loginForm = jQuery("#login .login-form");
jQuery("#login a").click(function(e) {
e.preventDefault();
loginForm.slideToggle();
});
// below check isn't working why?
if (jQuery(loginForm).is(":visible")) {
jQuery("body").click(function() {
jQuery(loginForm).slideUp();
});
}
这段代码是从哪里执行的?绑定单击处理程序时,是否确定文档已准备就绪 此外,loginForm变量已包装在jQuery中,无需再次包装:
// Make sure the document is ready for manipulating the DOM:
jQuery( function ( $ ) {
var loginForm = $( '#login .login-form' );
$( '#login a' ).click( function ( e ) {
e.preventDefault();
loginForm.slideToggle();
});
if ( loginForm.is( ':visible' ) ) {
$( document ).click( function () {
loginForm.slideUp();
});
}
});
您需要在单击处理程序中进行检查:
jQuery("body").click(function() {
if (loginForm.is(":visible")) {
loginForm.slideUp();
}
});
另外,您不需要对已经是jQuery对象的对象调用jQuery。无需重新包装您的loginForm
您还需要在登录时单击处理程序中的event.stopPropagation,否则单击该处理程序将冒泡到正文并触发该处理程序。为什么今天没有人使用$today?人们开始喜欢写东西了?你能解释一下为什么if loginForm.is:visible{alert'yes';}不起作用吗?你的if在点击处理程序之外。代码的作用是加载页面,检查表单是否可见,如果可见,则附加处理程序。如果您的表单在初始加载时不可见,则处理程序根本不会附加。好的,如果我使表单初始可见:隐藏而不是显示:无,那么我的代码将正常工作。你的解决方案是唯一的出路吗?我问这个问题的原因是,似乎每次点击页面都会测试表单是否可见,即使表单不可见,而不是首先检查表单是否可见,然后应用函数。thx.如果你让表单可见,你的代码会在每次点击主体时滑动。如果愿意,可以将body.click放置在其他单击处理程序中,然后取消绑定body.click。