[英]Access key value pairs in jQuery.each()
我不了解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'});
});
我不明白为什么我不能直接访问这样的价值
value.css({backgroundColor:'red', fontWeight:'bold'});
因为据我了解(键,值)对,值应该等同于arr [name]。
因为value
将是原始DOM元素,而不是jQuery实例。 您可以这样做:
$(value).css({backgroundColor:'red', fontWeight:'bold'});
...但是当您为所有元素设置相同的css
,您根本就不需要each
元素:
arr = $("#foo").find("div");
// modify css formatting for all sub-divs
arr.css({backgroundColor:'red', fontWeight:'bold'});
旁注:对于那些确实想要遍历arr
之类的jQuery集(不是数组,btw)的情况,更常用的是arr.each(...)
而不是$.each(arr, ...)
。 如果需要在集合中的每个元素上设置不同的值,则还可以将函数传递给大多数设置器,例如css
, text
, html
等:您可以从函数中返回该元素的值。
例如,假设您要遍历一个集合,如果元素为空,则将背景设置为red
否则,将背景设置为green
:
$("selector for the elements").css("background-color", function() {
return $.trim($(this).text()) === "" ? "red" : "green";
});
因为该value
是dom元素引用,而不是jQuery对象,所以它没有.css()
类的jQuery方法。
无需像以前那样使用迭代,只需在arr
对象上调用.css()
方法,该对象是一个jQuery对象,其中包含对所有子div
元素的引用
arr = $("#foo").find("div");
arr.css({backgroundColor:'red', fontWeight:'bold'});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.