为什么这样做?(JQuery)

Why does this work? (JQuery)

本文关键字:JQuery 这样做 为什么      更新时间:2023-09-26

这很有效:

$('div.hg_logo').hover(
    function(){$(this).animate({
        backgroundColor: 'rgba(31, 197, 78, 0.75)'
    }, 1200)},
    function(){$(this).animate({
        backgroundColor: 'white'
    }, 1200)}
);

但鉴于我对CSS和JS的了解,它不应该!

1"rgba(3197,780.75)"不应该需要引号
2背景色应该是背景色
3颜色后应使用分号
在针对"this"的内部函数之后应使用4个分号。

据我所知,上面的四点是正确的CSS和JS,但它们中的任何一点都会破坏代码。

这是$animate的一个怪癖吗?它有可能被改变吗?还是我应该死记硬背?

  1. 没有。它是一个CSS属性,作为文本字符串传递,以便由jQuery解释为CSS属性
  2. 没有。CSS属性在JS中使用时会转换为CamelCase。虽然jQuery也可以采用连字符形式,但您的示例的作者选择了用骆驼大小写,因此不需要引用它们。(出于可读性的原因。)
  3. 没有。CSS中的分号用于分隔多个规则。最后一条规则不需要以分号#foo { color: white }结尾,这在CSS中是完全合法的
  4. 没有。JS中的分号表示一个逻辑行结束,而不是其他。此外,如果有一个物理线路结束(即像'n这样的线路中断),它们也是可选的

1"rgba(3197,780.75)"不应该需要引号。

是的,应该。它是一个字符串,而不是一个值。这是因为您使用的是JS,而不是CSS。引号之间的任何内容都用作CSS。JS不在乎你在里面放了什么,它可能是'pancake'(很明显,这对CSS没有任何作用)。

2背景色应该是背景色。

否,-在JS中的意思是"minus"。它已经用于进行计算。在CSS中它是background-color,在jQuery中它是backgroundColor。没有理由完全相同,因为这不是一个以CSS形式插入的字符串(因为它周围没有引号)。

3颜色后应使用分号。

分号是由jQuery添加的。没有必要使用类似'rgba(31, 197, 78, 0.75);'的东西。

在针对"this"的内部函数之后应使用4个分号。

这样做确实更一致,但不需要这样做,因为块中没有包含函数的代码行。通常,在块中的最后一行代码后面不需要分号(块通常封装在{}中)。

这是$animate的一个怪癖吗?它有可能被改变吗?还是我应该死记硬背?

这很符合逻辑,不会很快改变。我建议更多地学习JS和jQuery,以提高您的理解。或者你可以接受这些事情,试着记住它们;)