Javascript 将函数传递给css属性
是否可以将函数作为值传递给所有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
<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;
});
});