Javascript 如何更正检索$(object).css(“;margin”;)并在不同浏览器的.animate()中应用此值?

Javascript 如何更正检索$(object).css(“;margin”;)并在不同浏览器的.animate()中应用此值?,javascript,jquery,Javascript,Jquery,在jQuery API中编写了what.css()返回字符串。此字符串的视图类似于值,不带引号。 如果我将$(object.css(“margin”)像这样放在我的代码中: 条件:这个!=对象 $(this).animate({ width: "toggle", margin: $(object).css("margin"), padding: ($(object).css("padding")) }, time, "linear"); “Chrome”的计算结果完美,但“IE 11”和最后一

在jQuery API中编写了what.css()返回字符串。此字符串的视图类似于
,不带引号。 如果我将
$(object.css(“margin”)
像这样放在我的代码中:
条件:这个!=对象

$(this).animate({
width: "toggle",
margin: $(object).css("margin"),
padding: ($(object).css("padding"))
}, time, "linear");
“Chrome”的计算结果完美,但“IE 11”和最后一个“Edge”的计算结果不正确。
如果我将添加到
$(object.css(“margin”)
引号中,则所有浏览器的工作方式相同。
您可以在下面的代码中看到相同的情况

最终我需要独立于内容的代码。如何修复它

$(文档).ready(函数(){
var时间=200;
无功延迟=时间+100;
$(“.icon-language”)。单击(函数(){
幻灯片($(“.rightBlockMenu i”),$(此),时间);
$(“.hidden”).delay(delay)。设置动画({
宽度:“显示”
},时间,“线性”);
});
$(“.icon-search-1”)。单击(函数(){
幻灯片($(“.rightBlockMenu i”),$(此),时间);
});
$(“.icon-user-o”)。单击(函数(){
幻灯片($(“.rightBlockMenu i”),$(此),时间);
});
$(“.icon basket”)。单击(函数(){
幻灯片($(“.rightBlockMenu i”),$(此),时间);
});
})
功能幻灯片(选择器、对象、时间){
if(selector.not(object.css(“显示”)!=“无”){
选择器。非(对象)。设置动画({
宽度:“隐藏”,
边距:“0px-1px”,
填充:“9px 0px”
},时间,“线性”);
$(对象)。设置动画({
边距:“0”
},时间)。添加类(“活动i”);
}
if(selector.not(object.css(“显示”)=“无”){
选择器。每个(函数(){
if($(this).is(selector.last())){
$(此)。设置动画({
宽度:“显示”,
边距:“0.6px”,
填充:“\”+$(对象).css(“填充”)+“\”
},时间,“线性”);
$(this.removeClass(“active_i”);
}否则{
$(此)。设置动画({
宽度:“显示”,
边距:“0 6px”,
填充:“9px 18px”
},时间,“线性”,函数(){
if($(this).is(selector.first())){
$(this.css(“左边距”,“0”);
}
});
$(this.removeClass(“active_i”);
}
});
}
}
.header\u顶部{
高度:100px;
位置:相对位置;
}
.rightBlock{
最大高度:100%;
右边填充:10px;
浮动:对;
右:0;
文本对齐:右对齐;
}
.rightBlockMenu{
颜色:hsla(0,0,80,1);
字号:2.7em;
垂直对齐:中间对齐;
显示:内联块;
}
.rightBlockMenu i:最后一个孩子{
右边距:0;
}
.右一:第一个孩子{
左边距:0;
}
.rightBlockMenu i:悬停{
颜色:hsla(0,70%,45%,1);
光标:指针;
}
.rightBlockMenu一{
填充:9px 18px;
边际:0.6px;
垂直对齐:底部对齐;
边框:1px实心hsla(0,0%,80%,1);
显示:内联块;
}
.主动式{
颜色:hsla(0,70%,45%,1);
}

aaa
bbb
ccc
ddd

我在Firefox、Chrome和Edge上测试了你的代码,看起来不错。也许可以更清楚地说明你想要实现的目标。在任何情况下,您的代码看起来都是不必要的复杂

请在下面查找代码的较短版本:

$(文档).ready(函数(){
var时间=200;
无功延迟=时间+100;
$(“.rightBlockMenu i”)。单击(函数(){
var currentElement=jQuery(this);
var margin=“0 6px”;
var padding=“9px 18px”;
var toggle=“show”;
if(!currentElement.hasClass(“活动的_i”)){
currentElement.addClass(“active_i”)
margin=“0”;
padding=“9px 0”;
切换=“隐藏”;
}
currentElement.sides().each(函数(索引,elemenet){
jQuery(elemenet).removeClass(“active_i”).animate({
宽度:切换,
保证金:保证金,
填充:填充
},时间,“线性”,函数(){
//隐藏后显示元素
if(currentElement.hasClass(“图标语言”)){
setTimeout(函数(){
jQuery(elemenet).animate({
宽度:“显示”,
边距:“0 6px”,
填充:“9px 18px”
});
},延误);
}
如果(切换==“显示”)
$(“.rightBlockMenu i”).removeClass(“active_i”);
});
});
});
});
.header\u顶部{
高度:100px;
位置:相对位置;
}
.rightBlock{
最大高度:100%;
右边填充:10px;
浮动:对;
右:0;
文本对齐:右对齐;
}
.rightBlockMenu{
颜色:hsla(0,0,80,1);
字号:2.7em;
垂直对齐:中间对齐;
显示:内联块;
}
.rightBlockMenu i:最后一个孩子{
右边距:0;
}
.右一:第一个孩子{
左边距:0;
}
.rightBlockMenu i:悬停{
颜色:hsla(0,70%,45%,1);
光标:指针;
}
.rightBlockMenu一{
填充:9px 18px;
边际:0.6px;
垂直对齐:底部对齐;
边框:1px实心hsla(0,0%,80%,1);
显示:内联块;
}
.主动式{
颜色:hsla(0,70%,45%,1);
}

aaa
bbb
ccc
ddd

我想要的:1.单击“aaa”后,隐藏另一个元素。左边距和右边距为“0”(在您的示例中,current元素始终为)。添加类。2.在“aaa”之后将隐藏,在延迟之后,从左侧“aaa”将显示之前隐藏的新元素。从“aaa”中删除class“.active_i”(在您的示例中不起作用)3。不管我要点击元素多少次,这个元素应该可以工作(你的例子和我的不一样)。4.需要从元素中检索CSS值,而不是写入。左侧显示的信息取决于所选元素。我更新了代码以匹配您的要求。我不能理解第四点。元素将通过动画功能进行修改。也就是说wid