jQuery循环遍历两个DIV中的元素

时间:2010-11-19 17:32:48

标签: jquery jquery-selectors

我有一个脚本循环遍历DOM元素列表,并在找到它们时对每个元素进行操作。我遇到的问题是我需要为相同的元素搜索两个不同的div。

这是我到目前为止所拥有的

var elements = {
            1 : "h1",
            2 : "h2",
            3 : "h3",
            4 : "h4",
            5 : "p",
            6 : "li",
            7 : "a",
            8 : "td",
            9 : "span",
            10 : "img"
        }

        $.each(elements, function(key, val){
            if(val != "img") {
                if($(".t_content " + val + ":not([id^=element])"))
                    $(".t_content " + val + "[id^=element]").addClass('t_element');
            } else {
                $('.t_content, .t_component').find('img, div > img').addClass('t_element edit_img_area').removeClass('yellow');
                $(val).unwrap('a');
            }
        });

我目前正在搜索的div是$(".t_content"),但我想搜索.t_content.t_component ...我知道您可以像$(".t_content, .t_component")一样搜索但我不会知道如何将其纳入此脚本。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

无需循环,只需一次选择所有元素:

$('h1, h2, h3,... ').doSomething()

答案 1 :(得分:1)

你为什么不这样做:

$("h1, h2, h3, h4 ...", $(".t_content, .t_component")).not("[id^=element]").addClass("t_element");

你可以在jQuery中将第二个参数(context)传递给$(),告诉它在你的选择器中的项目的上下文中查找。在您的情况下,您的第二个参数将是您要在其中搜索的两个div:$(".t_content, .t_component")

答案 2 :(得分:1)

你可以这样做:

$elements = $('h1,h2,h3,h4,...');
$elements.whateverHere();

或者,换句话说,如果您将项目存储在一个简单的数组中,您可以这样做:

elements = ['h1','h2','h3'];
for(x in elements){
   if(elements[x] == 'h1'){/*Do something here*/}
}

在第一个例子中,我保存$elements让你保持更干,因为你可以重复使用那一件,如果你想在其他地方使用它会更快,因为现在缓存了元素jQuery的。

以下是循环使用JSON的方法:

for (var key in element) {
  if (element.hasOwnProperty(key)) {
    alert(key + " -> " + element[key]);
  }
}

我把它放在一个数组中,但是看起来你不需要看到键和值,你只需要一个好的元素数组来检查。