JQuery цикл по элементам в двух DIV - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть скрипт, который просматривает список элементов 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 ]

2 голосов
/ 19 ноября 2010

Нет необходимости в цикле, просто выберите все элементы одновременно:

$('h1, h2, h3,... ').doSomething()
1 голос
/ 19 ноября 2010

Вы можете сделать что-то вроде этого:

$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]);
  }
}

Я поместил его в массив, хотя из-за того, что он не похож на то, что вам нужно видеть ключ и значение, вам просто нужен массив элементов для проверки.

1 голос
/ 19 ноября 2010

Почему бы вам не сделать что-то подобное:

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

Вы можете передать второй аргумент (context) в $ () в jQuery, который говорит ему искать в контексте элементы, которые есть в вашем селекторе. В вашем случае вашим вторым аргументом будут два div, которые вы хотите найти: $(".t_content, .t_component").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...