JQuery цикл через классы с использованием each () - проблема - PullRequest
0 голосов
/ 23 сентября 2011

Я использую этот код для циклического просмотра каждого «.accessoryrow», а затем выбираю «диалог» + счетчик и «.see-details» + счетчик.Поэтому, когда цикл проходит первый раз, он выбирает класс dialog1 и класс see-details1;второй раз диалог2, см. подробности2 и так далее.Я думаю, что я не правильно добавляю счетчик к селектору.Пожалуйста, поправьте меня.Спасибо

КОД:

  var counter = 1;
        $(function () {
        $(".accessoryrow").each(function() {
            $(".dialog" + counter).dialog({
                autoOpen: false,
                show: "blind",
                hide: "fade"
            });

            $(".see-details" + counter).click(function () {
                $(".dialog" + counter).dialog("open");
                return false;
            });
            counter++;
        });

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Проблема в том, что строка $(".dialog" + counter).dialog("open"); не оценивается, пока не будет нажата ссылка.Таким образом, он использует значение counter, которое является текущим на то время .Лучший способ сделать это - полностью убрать счетчик и использовать селекторы jQuery для выбора правильного .dialog.

Без HTML я не могу сказать, как он должен выглядеть, но вы 'мы хотим, чтобы функция щелчка выглядела как-то по

 $(".see-details").click(function () {
        $(this).sibling(".dialog").dialog("open");
        return false;
    });

Конечно, это предполагает, что элемент .dialog на самом деле является родственным элементом .see-details.Вам нужно будет еще немного пройтись по дереву, если это не так.

0 голосов
/ 23 сентября 2011

Попробуйте это (не проверено):

$(function () {
    $(".accessoryrow").each(function(index) {
        $(".dialog" + (index + 1)).dialog({
            autoOpen: false,
            show: "blind",
            hide: "fade"
        });

        $(".see-details" + (index + 1)).click(function () {
            $(".dialog" + (index + 1)).dialog("open");
            return false;
        });
    });

Индекс передает номер цикла функции. Он начинается с 0, где, я думаю, вам нужно, чтобы он начинался с 1, поэтому я добавил 1 к каждому, где он используется.

...