Javascript 样式更新后CSS类丢失
我正在将一个类(rShift)应用于充当菜单选项卡的DIV。类给它一个Javascript 样式更新后CSS类丢失,javascript,jquery,jquery-ui,css,Javascript,Jquery,Jquery Ui,Css,我正在将一个类(rShift)应用于充当菜单选项卡的DIV。类给它一个:hover行为。单击DIV,我会在屏幕上显示一个菜单。在折叠菜单时,我松开了类和:hover行为 我正在使用jQueryUI,甚至尝试了.addClass(“”)来应用丢失的类,但没有成功 见:| 最初加载页面时,您可以在页面左上角的搜索框下方看到一个选项卡。鼠标悬停时,它会跳出几个像素。单击后,将显示菜单。再次单击选项卡时,菜单将折叠,跳出效果将丢失:-( 我做错了什么?正在添加该类,但单击后,您将通过jquery直接将内
:hover
行为。单击DIV,我会在屏幕上显示一个菜单。在折叠菜单时,我松开了类和:hover
行为
我正在使用jQueryUI,甚至尝试了.addClass(“”)
来应用丢失的类,但没有成功
见:|
最初加载页面时,您可以在页面左上角的搜索框下方看到一个选项卡。鼠标悬停时,它会跳出几个像素。单击后,将显示菜单。再次单击选项卡时,菜单将折叠,跳出效果将丢失:-(
我做错了什么?正在添加该类,但单击后,您将通过jquery直接将内联样式应用于leftmenutab。此样式(左)覆盖样式表中的所有样式 我会删除您通过jquery应用的内联样式,并将您想要的样式添加到css中 创建如下样式:
.leftMenuTab[data-state="expanded"] { left: 100px; }
.leftMenuTab[data-state="collapsed"] { left: 0; }
并从javascript中删除以下行:
$(".leftMenuTab").css("left", "+=100px");
$(".leftMenuTab").css("left", "-=100px");
或者,单击左菜单选项卡和左菜单添加和删除类,并通过CSS设置它们的样式。如下所示:
.leftMenuTab[data-state="expanded"] { left: 100px; }
.leftMenuTab[data-state="collapsed"] { left: 0; }
HTML:
CSS:
.leftMenuTab.charIcon:after{
内容:“>>”;
}
.leftMenuTab.expanded.charIcon:after{
内容:“正在添加该类,但单击时,您将通过jquery直接将内联样式应用于leftmenutab。此样式(左)覆盖样式表中的所有样式
我会删除您通过jquery应用的内联样式,并将您想要的样式添加到css中
创建如下样式:
.leftMenuTab[data-state="expanded"] { left: 100px; }
.leftMenuTab[data-state="collapsed"] { left: 0; }
并从javascript中删除以下行:
$(".leftMenuTab").css("left", "+=100px");
$(".leftMenuTab").css("left", "-=100px");
或者,单击左菜单选项卡和左菜单添加和删除类,并通过CSS设置它们的样式。如下所示:
.leftMenuTab[data-state="expanded"] { left: 100px; }
.leftMenuTab[data-state="collapsed"] { left: 0; }
HTML:
CSS:
.leftMenuTab.charIcon:after{
内容:“>>”;
}
.leftMenuTab.expanded.charIcon:after{
内容:“修改元素的样式后,样式left:0px;
保留在DIV中,这抵消了悬停的影响
以下是相关代码:
$('.leftMenuTab').click(function(e) {
temp = $(this);
if ($('.leftMenuTab').attr('data-state') == "collapsed") {
$(".charIcon", this).html("«");
$('.leftMenuTab').attr('data-state', 'expanded');
$(".leftMenu").css("left", "+=110px");
$(".leftMenuTab").css("left", "+=100px");
} else {
$(".charIcon", this).html("»");
$('.leftMenuTab').attr('data-state', 'collapsed');
$(".leftMenu").css("left", "-=110px");
$(".leftMenuTab").css("left", "-=100px");
$(this).addClass("rShift");
}
});
最快的修复方法是删除left
样式,而不是修改它(并且不需要再次添加该类):
注意:这是使用web上的本地副本测试的。修改元素的样式后,样式left:0px;
保留在DIV中,这抵消了悬停的影响
以下是相关代码:
$('.leftMenuTab').click(function(e) {
temp = $(this);
if ($('.leftMenuTab').attr('data-state') == "collapsed") {
$(".charIcon", this).html("«");
$('.leftMenuTab').attr('data-state', 'expanded');
$(".leftMenu").css("left", "+=110px");
$(".leftMenuTab").css("left", "+=100px");
} else {
$(".charIcon", this).html("»");
$('.leftMenuTab').attr('data-state', 'collapsed');
$(".leftMenu").css("left", "-=110px");
$(".leftMenuTab").css("left", "-=100px");
$(this).addClass("rShift");
}
});
最快的修复方法是删除left
样式,而不是修改它(并且不需要再次添加该类):
注意:这是用您网站上的本地副本测试的。感谢您提供的解决方案:-)我希望我能选择多个正确答案。我刚刚开始怀疑内联样式与此有关。:-)我想你会发现这个解决方案更简洁,并且遵循最佳实践,将代码、标记和样式分离到适当的位置。+1我看到你的答案有了很大的改进。我只是选择了快速解决方案注意。感谢您提供的解决方案:-)我希望我能选择多个正确答案。我刚刚开始怀疑内联样式与此有关。:-)我想您会发现此解决方案更简洁,并遵循将代码、标记和样式分离到适当位置的最佳实践。+1我看到您改进了ans我们很多。我只是寻求快速解决方案。谢谢!这很有效。我得到了罗伯特·麦基发布的解决方案。但这是我要做的。谢谢!这很有效。我得到了罗伯特·麦基发布的解决方案。但这是我要做的。