Javascript Jquery在单击时切换类,并在单击其他菜单项时删除类
我的代码是:Javascript Jquery在单击时切换类,并在单击其他菜单项时删除类,javascript,jquery,Javascript,Jquery,我的代码是: $(document).ready(function() { $(".more").click(function(e) { $(this).toggleClass("open"); if (!$(".more").hasClass(".icon-arrow-down")) { // alert('Yep has class'); $(this).toggleClass("icon-arrow-d
$(document).ready(function() {
$(".more").click(function(e) {
$(this).toggleClass("open");
if (!$(".more").hasClass(".icon-arrow-down")) {
// alert('Yep has class');
$(this).toggleClass("icon-arrow-down");
$(this).toggleClass('icon-arrow-up');
}
else {
// alert('all ok');
}
});
});
我在测试一些东西的时候有点乱。基本上我有一个菜单,有一个。更多的类用于下拉列表。移动用户单击“更多”,这会在菜单中添加一类。打开,以便人们可以看到它。现在我的问题是,这段代码似乎不是100%都能正常工作
有时,这些类会变得混乱,我会打开一个菜单,但仍然会出现一个向下的图标类
另外,如果单击另一个more
按钮,我将如何添加一些内容以删除open
类
一如既往地感谢您的帮助。您不应该只是检查当前元素是否具有.icon向下箭头类吗。所以而不是
if (!$(".more").hasClass(".icon-arrow-down"))
这个
<>也许考虑使用< /P>
$(".more").click(function(e) {
if( $(this).hasClass("open") ) {
$(this).removeClass("open").addClass("closed");
} else {
// if other menus are open remove open class and add closed
$(this).siblings().removeClass("open").addClass("closed");
$(this).removeClass("closed").addClass("open");
}
});
然后使用.open和.closed类设置箭头样式
小提琴
很简单,但向您展示了您可以做什么。在菜单中,我总是使用以下内容:
$(document).ready(function() {
$(".more").click(function(e) {
if($(this).hasClass("open")) {
// if it's open then just close it
$(this).removeClass("open");
} else {
// if it's closed, then close everything else and open it
$(".more").removeClass("open");
$(this).addClass("open");
}
/* TODO: now do something similar with icon-arrow */
});
});
您可以从所有中删除类。打开,然后将其添加到单击的类中:
$(document).ready(function() {
var $more = $(".more");
$more.click(function(e) {
var $this = $(this);
if ($this.hasClass("open") {
$more.removeClass("open");
} else {
$more.removeClass("open");
$this.addClass("open");
}
});
});
我得到一个语法错误,是因为这一行:if(this).hasClass(“open”){@Mat visual是的,对不起。注意到了它并修改了代码。这也抛出了一个语法错误,认为是var$(this)=$this;行吗?天哪…对不起。我的错。更正了。应该是var$this=$(this)
$(document).ready(function() {
var $more = $(".more");
$more.click(function(e) {
var $this = $(this);
if ($this.hasClass("open") {
$more.removeClass("open");
} else {
$more.removeClass("open");
$this.addClass("open");
}
});
});