我正在尝试使用幻灯片切换来显示表单中的符号,如果他们在框外单击,我希望该表单向上滑动。
我的一切运行正常,但我的可见性检查不起作用,因此在表单容器外单击无效。你能发现原因吗?
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();
});
}
答案 0 :(得分:0)
此代码从何处执行?在绑定document
处理程序时,您确定click
已准备就绪吗?
此外,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();
});
}
});
答案 1 :(得分:0)
您需要在点击处理程序中进行检查:
jQuery("body").click(function() {
if (loginForm.is(":visible")) {
loginForm.slideUp();
}
});
另外请注意,您不需要在已经是jQuery对象的对象上调用jQuery
。无需双重包裹loginForm
。
您也希望在登录点击处理程序中event.stopPropagation()
,否则点击它会冒泡到正文并触发该处理程序。