【发布时间】:2013-01-29 08:23:38
【问题描述】:
我有一个问题,
我正在尝试使用toggleClass 进行弹出式切换。但是,我还制定了一条从 StackOverflow 获得的规则,当在外部单击时弹出窗口消失。
但是,当我单击登录按钮时,它会出现,但我无法再使用登录按钮使其消失。但我已经制定了规则:
$('a#inloggen').click(function() {
$('.inloggen').toggleClass('active');
});
但他似乎忽略了这一点......
也许你们可以发现我看不到的问题。
HTML
<div id="usermenu">
<div class="inloggen"><h2 class=" swe-editable" _sweid="17" _sweclass="nl swe swe-snippet swe-h2 ">
Inloggen</h2>
this is the popup!
<p> </p>
<p> </p>
<p>Wachtwoord vergeten? <a href="#">Klik hier</a>.</p></div>
</div>
<ul class="menu">
<li class="first"><a href="#" id="inloggen">login</a></li>
</ul>
jQuery
$('a#inloggen').click(function() {
$('.inloggen').toggleClass('active');
});
$(document).mouseup(function (e)
{
var container = $('.inloggen');
if (container.has(e.target).length === 0)
{
container.removeClass('active');
}
});
if ($('#project_user_loginform-name').hasClass('error') || $('#project_user_loginform-password').hasClass('error')) {
$('.inloggen').addClass('active');
};
我尝试了什么?
我试图向在 div 外部单击时使 div 消失的函数添加一个异常,但这似乎只是逆转了进度。
var container2 = $('a#inloggen');
if (container.has(e.target).length === 0 && container2.has(e.target).length !== 0)
更新:
我在进展中更进一步,将 mouseup 更改为 mousedown 并更改了函数的顺序。这让我更接近解决方案,但它还不能完美地工作。
$(document).mousedown(function (e)
{
var container = $('.inloggen');
if (container.has(e.target).length === 0)
{
container.removeClass('active');
}
});
$('a#inloggen').click(function() {
$('.inloggen').toggleClass('active');
});
【问题讨论】:
-
帮自己一个忙,使用 CSS3 处理这样的低级内容。
-
@jsksma2 这是一个需要兼容IE8的网站。我确实主要使用 CSS3。
-
我可能是错的,但 CSS3 不兼容 IE8 吗?我想我记得在 IE8 首次发布时成功使用过它。考虑编写 IE 条件并为 IE 设置单独的样式表。它会让你的生活更轻松。
-
@jsksma2 据我所知,CSS3 从 9 版开始就与 IE 兼容。
标签: javascript jquery html popup