我有一个脚本循环遍历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")
一样搜索但我不会知道如何将其纳入此脚本。
感谢您的帮助!
答案 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]);
}
}
我把它放在一个数组中,但是看起来你不需要看到键和值,你只需要一个好的元素数组来检查。