这个问题已经被问了三次,但我似乎无法让它发挥作用。这是一个小提琴。您可以通过单击链接来切换登录表单。如果您想隐藏它,您可以再次单击该链接,或在表单本身之外单击。
$j = jQuery.noConflict();
$j("a#login-link").click(function (e) {
$j("div#custom-login").slideToggle("fast");
e.preventDefault();
e.stopImmediatePropagation();
});
$j(document).click(function (e) {
if ($j("div#custom-login").is(":visible") && !$j("div#custom-login, div#custom-login *").is(e.target)) {
$j("div#custom-login").slideUp("fast");
}
});
问题是在表单内部点击仍然会隐藏表单——除非你点击边框,这很奇怪。一种解决方案是添加一个*
选择器来获取所有子元素,如下所示:
$j(document).click(function (e) {
if ($j("div#custom-login").is(":visible") && !$j("div#custom-login, div#custom-login *").is(e.target)) {
$j("div#custom-login").slideUp("fast");
}
});
但我无法想象它不能以其他方式完成?