这样像类似下面的四个同一代码段中的4个选择操作 $class("a").color("green"); $class("b").color("red"); $class("c").color("green"); $class("d").color("red"); 最终只需要一次遍历就可以实现了。 因为之前么有太关注选择器的问题,不知道是不是我out了,大家早就已经想到了? 下面是sample,两次选择 一次遍历 aaaaaaaaaaaaaa bbbbbbbbbbbb cccccccccccccccc var $class = function () { var checker = []; var updateHandler = null; var traverse = function (node,func){ func(node); for(var i = 0; i<node.childNodes.length; i++) { func(node.childNodes[i]) } } function update () { traverse(document.body,function(node){ for(var i = 0 ; i< checker.length; i++) checker[i](node); }); checker = []; updateHandler = null; } function startupdate() { if(updateHandler!==null) return ; updateHandler = setTimeout(update,10); } var $class = function(jpath){ var color; checker.push(function(node){ if(typeof node.className != "string")return; var classes = node.className.split(" ") for(var i = 0; i < classes.length ; i++) if(classes[i] == jpath && color) { node.style.backgroundColor = color; break; } }); return { color:function(v){ color = v; startupdate(); } } } $class.update = update; return $class; }(); $class("a").color("green"); $class("b").color("red"); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]