我不明白jQuery.each函数的语义.这种代码的和平工作正常:
arr = $("#foo").find("div");
// modify css formatting for all sub-divs
$.each(arr, function(name, value) {
arr.eq(name).css({backgroundColor:'red', fontWeight:'bold'});
});
Run Code Online (Sandbox Code Playgroud)
我没有理解为什么我不能直接访问这样的值
value.css({backgroundColor:'red', fontWeight:'bold'});
Run Code Online (Sandbox Code Playgroud)
因为据我所知(键,值)对,值应该等于arr [name].
因为value将是一个原始的DOM元素,而不是一个jQuery实例.你可以这样做:
$(value).css({backgroundColor:'red', fontWeight:'bold'});
Run Code Online (Sandbox Code Playgroud)
...但是当你css为所有元素设置相同时,你根本不需要each:
arr = $("#foo").find("div");
// modify css formatting for all sub-divs
arr.css({backgroundColor:'red', fontWeight:'bold'});
Run Code Online (Sandbox Code Playgroud)
附注:对于您这些情况都需要遍历一个jQuery的内容设置像arr(它不是一个数组,顺便说一句),使用更常见的是arr.each(...),没有$.each(arr, ...).您还可以将函数传递给大多数setter css,例如text,html等等,如果您需要在集合中的每个元素上设置不同的值:您将该元素的值返回到函数之外.
例如,假设你要循环一个集合并将背景设置为red元素是否为空,或者green如果不是:
$("selector for the elements").css("background-color", function() {
return $.trim($(this).text()) === "" ? "red" : "green";
});
Run Code Online (Sandbox Code Playgroud)