Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jquery дублируется событие 
V
    Опции темы
Gregoryy
  Дата 15.10.2010, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: 1
Всего: 1



Юзаю JQuery 1.4.2 и JQuery UI 1.8.5

Возникла проблема в том что у меня дублируется события. При клике на кнопке я аджаксом обращаюсь к странице, а результат запроса помещаю в div контейнер после чего вывожу его как диалог.
Код

 $.ajax({
                url: "/Debtor/Create",
                success: function (data) {
                    $("#DebtorAdd").html(data);
                    $("#DebtorAdd").dialog({ modal: true, width: 310, height: 500, resizable: false });
                }
            });

При загрузки диалога выполняется загрузка данных и заполнения селекта в данном диалоге. В этом деалоге присутствует CascadingDropDown. Там я загружаю регион, город, улицу. Проблема возникает если я закрою диалоговое окно и открою снова и попробую выбрать другой регион. у меня события которое отвечает на изменения повторяется 2 раза. Если снова закрою и потом открою 3 раза и т.д.

Код

$(".streetRegion").live('change', function () {
    $.post("/City/GetCityByRegion", { regionId: $(this).val() }, function (data) {
        populateDropdown($(".streetCity"), data);
    });
});


Решил сделать так
Код

 $.ajax({
                url: "/Debtor/Create",
                success: function (data) {
                    $("#DebtorAdd").html(data);
                    $("#DebtorAdd").dialog({ modal: true, width: 310, height: 500, resizable: false, close: function (event, ui) {
                        $("#DebtorAdd").html("");
                    } 
                    });
                }
            });


Не помогло. Даже не знаю что делать  smile 
PM MAIL ICQ   Вверх
Gregoryy
Дата 15.10.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: 1
Всего: 1



Я вот только одного понять не могу, я файербагом у лиса проверял штмл и он был чист. Тогда почему блин дублируется результат запроса.  smile 
PM MAIL ICQ   Вверх
Любитель
Дата 16.10.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Ну.. посмотри для начала сколько подписчиков там (в косноли файербага того же: $.data($('.streetRegion').get(0)).events.change.length).

Далее - надо код смотреть нормально. Где стоит эта подписка (и зачем в данном случае лайв)? Что делает populateDropdown?

Больше всего похоже, что ситуация очень проста: ты подписываешься лайвом при каждом показе диалога. Понятное дело, что очистка дом-а тут не при чём (на то он и лайв). Но вообще - надо смотреть код.


--------------------
PM MAIL ICQ Skype   Вверх
Gregoryy
Дата 17.10.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: 1
Всего: 1



Я решил эту проблему так. 

Код

 $.ajax({
                url: "/Debtor/Create",
                success: function (data) {
                    var dialog = $("#DebtorAddDialog");
                    if (dialog.length == 0) {
                        $("body").append("<div id=\"DebtorAddDialog\" title=\"Додавання нового боржника\" class=\"dialog\"><\/div>");
                        $("#DebtorAddDialog").append(data);
                    }
                    $("#DebtorAddDialog").dialog({ modal: true, width: 310, height: 500, resizable: false, close: function (event, ui) {
                        
                    }
                    });
                }
            });

Я создаю диалоговое окно динамически. И перед созданием его проверяю существует ли оно. Если нет, добавляю на страницу, если да, просто показываю. 

Это сообщение отредактировал(а) Gregoryy - 17.10.2010, 15:18
PM MAIL ICQ   Вверх
Любитель
Дата 17.10.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Зачем такие сложности?
1. Либо добавляй вообще один раз (до создания диалога) через лайв.
2. Либо (лучше в данном случае) добавляй каждый раз - но обычный хандлер (не лайв).


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.