Javascript 有没有一种简单的方法可以基于当前值更改css值?

Javascript 有没有一种简单的方法可以基于当前值更改css值?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,目前我正在做的是: if ($( "#htmlBox" ).css("display") == "block") { $( "#htmlBox" ).css("display", "none"); } else { $( "#htmlBox" ).css("display", "block"); } 我想知道在这两个值之间切换的更快方法是什么。在这种情况下,您可以使用toggle()在可见和隐藏显示状态之间来回切换: $("#htmlBo

目前我正在做的是:

    if ($( "#htmlBox" ).css("display") == "block") {
        $( "#htmlBox" ).css("display", "none");
    } else {
        $( "#htmlBox" ).css("display", "block");
    }

我想知道在这两个值之间切换的更快方法是什么。

在这种情况下,您可以使用
toggle()
在可见和隐藏显示状态之间来回切换:

$("#htmlBox").toggle();
如果您确实希望为此使用
css()
,则可以在函数中提供新值,您可以使用该值执行所需的任何逻辑。此函数还接受当前值作为参数:

$('#htmlBox').css('display', function(i, state) {
  return state === 'none' ? 'block' : 'none';
});

一般来说,最好尽可能避免使用
css()
,因为UI样式应该只保留在css中。将其放入JS中可能会导致维护问题。以这种方式完成后,最好使用
toggleClass()

在这种情况下,您可以使用
toggle()
在可见和隐藏显示状态之间来回切换:

$("#htmlBox").toggle();
如果您确实希望为此使用
css()
,则可以在函数中提供新值,您可以使用该值执行所需的任何逻辑。此函数还接受当前值作为参数:

$('#htmlBox').css('display', function(i, state) {
  return state === 'none' ? 'block' : 'none';
});

一般来说,最好尽可能避免使用
css()
,因为UI样式应该只保留在css中。将其放入JS中可能会导致维护问题。以这种方式完成后,最好在示例中使用可见性时使用
toggleClass()

,正如前面所建议的那样,
toggle()
最适合缩短初始代码,假设其他CSS示例可以使用

不过,是的,在您的特定情况下,
toggle()
是最好的选择

$("#htmlBox").css("display", $("#htmlBox").css("display") == "block" ? "none" : "block");

当您在示例中使用可见性时,正如前面所建议的,
toggle()
最适合缩短初始代码,假设您可以使用其他CSS示例

不过,是的,在您的特定情况下,
toggle()
是最好的选择

$("#htmlBox").css("display", $("#htmlBox").css("display") == "block" ? "none" : "block");

此代码是否由事件触发?您何时运行它?此代码是否由事件触发?什么时候运行它?此外,您要遍历DOM两次,并通过调用
$(“#htmlBox”)
twice来构建两个相同的jQuery对象。我必须研究三元运算符,这似乎是一种削减大量代码的好方法。谢谢你的链接@杰里迈希尔:是的,的确如此。OP应该使用单独的类并在它们之间切换,而不是使用
.css()
。答案中提供的代码表明,解决方案不应被逐字逐句地用于复制,而应根据需要使用其编码标准将其合并到OPs代码中。此外,您需要两次遍历DOM,并通过调用$(“#htmlBox”)twice来构建两个相同的jQuery对象。我必须研究三元运算符,似乎是一个削减大量代码的好方法。谢谢你的链接@杰里迈希尔:是的,的确如此。OP应该使用单独的类并在它们之间切换,而不是使用
.css()
。答案中提供的代码表明,解决方案不应一字不差地用于复制,而应根据需要使用其编码标准将其纳入OPs代码中。