繁体   English   中英

在jQuery.each()中访问键值对

[英]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, ...) 如果需要在集合中的每个元素上设置不同的值,则还可以将函数传递给大多数设置器,例如csstexthtml等:您可以从函数中返回该元素的值。

例如,假设您要遍历一个集合,如果元素为空,则将背景设置为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM