Javascript 将函数传递给css属性

Javascript 将函数传递给css属性,javascript,jquery,Javascript,Jquery,是否可以将函数作为值传递给所有css属性? 请参阅此处的代码: <script> $("div").click(function() { $(this).css({ width: function(index, value) { return parseFloat(value) * 1.2; }, height: function(index, value) { return parseFloat

是否可以将函数作为值传递给所有css属性? 请参阅此处的代码:

    <script>
  $("div").click(function() {
    $(this).css({
      width: function(index, value) {
        return parseFloat(value) * 1.2;
      },
      height: function(index, value) {
        return parseFloat(value) * 1.2;
      }

    });
  });
</script>

$(“div”)。单击(函数(){
$(this.css)({
宽度:函数(索引、值){
返回浮点数(值)*1.2;
},
高度:函数(索引、值){
返回浮点数(值)*1.2;
}
});
});
我真的不知道上面的代码为什么会工作。有人能解释一下将函数传递给属性的优点和缺点吗?这也是传递函数的方法吗
是否适用于所有其他css属性和非css属性?plz help Clearing in detail

它允许您基于旧值(即
参数包含的内容)或基于jQuery选择的每个特定元素的详细信息(即
索引
告诉您的内容,以及
)设置新值

因此,例如,如果您想使每个
的背景颜色更暗,而不管起始颜色如何,您可以编写代码以获取旧值并降低亮度(不是很小,但也不是很难)。你发布的例子是另一个很好的例子:它使元素变大了20%(好吧,它使宽度和高度变大了20%;我想这意味着面积变大了44%)

函数可以在
.css()方法的简单情况下用作值:

$('something').css("background-color", function(index, value) { ... });
或者,如示例中所示,函数可以是传递给方法的对象中的属性值:

$('something').css({
  "background-color": function(index, value) { ... },
  "width": function(index, value) { ... },
  // ...
});
您可以混合搭配:

$('something').css({
  "height": "100px",
  "z-index": function(index, value) { ... }
});

根据jQuery的api文档,可以将函数而不是直接值传递为css值。已添加到版本added:1.4中。 从文件中:

.css(属性名称、函数(索引、值))
propertyName
类型:字符串
CSS属性名称。

函数(索引、值)
类型:函数()
返回要设置的值的函数。这是当前元素。接收集合中元素的索引位置和旧值作为参数

基本思想是,当你使用函数作为值时。它将调用具有元素索引和当前值的函数作为动态计算的参数,或在某些条件下进行设置。然后在计算或条件之后,返回值以设置目标“propertyName”

例如:您可以认为您的网站中有一个较大的按钮,您希望用户在单击按钮时将当前字体大小加倍。您可以使用api来实现这一点。此外,我认为您不能将多个函数作为值传递给css方法

以下方面的工作示例:

HTML


它是@GrantThomas是否可以将函数分配给非css属性?但是该函数应该传递给css()方法,而不是property@Maizere ?? 函数是对象中的值,因此jQuery在处理
.css()
更新请求时将调用函数。它没有“传递”给财产;这是属性的值。这个方法也适用于非css属性吗?我们可以将多个函数传递给css方法吗?真的很困惑您的示例代码正在将一个对象传递给
.css()
方法。该对象具有与要设置的CSS属性相对应的命名属性。这些属性的值可以是jQuery分配给CSS属性的实际值,也可以是函数。如果jQuery看到一个属性值是一个函数,它将调用该函数并使用其返回值作为实际的CSS属性值。就这么简单。
<input type="button" value="larger size" id="enlargeBtn" />
<div id="content">
 Hello world.    
</div>
$("#enlargeBtn").on('click', function(){
    $("#content").css('font-size', function(index, value) {
        var size = parseInt(value, 10);
        return size*2;
    });
});