【发布时间】:2018-01-15 06:51:09
【问题描述】:
在我看来,我做错了什么。所以我做了一个由JS代码操作的下拉菜单。
所以它切换了绿色类,这使得 div 阻塞。现在我想通过再次单击相同的按钮来关闭下拉菜单。我正在验证是否有通过 hasClass() 方法切换绿色类。但它总是返回假。总是。为什么?
JFiddle:https://jsfiddle.net/bg4ev09k/3/ 实际原始代码:
$('#loginform').click(function(){
var container = $(".login");
if ($(this).hasClass('green'))
{
console.log("ere");
container.hide();
$(this).removeClass('green');
} else {
$('.login').fadeToggle('slow');
$(this).toggleClass('green');
}
});
$(document).mouseup(function (e)
{
var container = $(".login");
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
container.hide();
$('#loginform').removeClass('green');
}
});
<h2><a href="#" id="loginform"><i class="fa fa-sign-in" aria-hidden="true"></i> Enter</a></h2>
<div class="login">
<div class="arrow-up"></div>
<div class="formholderauth">
<div class="randompad">
<h1>Auth</h1>
<form action="core/auth/login.php" method="POST">
<p>
<input type="text" name="login" placeholder="Логин..." value="<?php echo @$data['login']; ?>">
</p>
<p>
<input type="password" name="password" placeholder="Пароль...">
</p>
<p>
<button type="submit" name="do_login">Войти</button>
</p>
</form>
<p><a href="/core/auth/signup.php"><i class="fa fa-user-plus" aria-hidden="true"></i> Register</a></p>
</div>
</div>
</div>
【问题讨论】:
-
更好的是,在 jsfiddle 或 codepen.io 上重现
-
当你在其他条件下创建
removeClass时为什么不addClass -
console.log($('[id=loginform]').length)在点击处理程序中给出了什么?多试几次。如果它大于 1,则说明问题不是由给定代码引起的。 -
@Difster 那再好不过了。情况会更糟。代码应该在此处以代码 sn-p 的形式发布。第三方链接可能会随着时间的推移而中断,如果发生这种情况,问题就毫无意义。
标签: javascript jquery html css