Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2012, 17:56
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Не выполняется функция, если ранее выполнена другая
Имеется динамические select'ы (#p_cat select#p_subcat select,#p_material select)
После загрузки страницы все 3 select'а видны и выбрано необходимое значение. При изменении первого селекта новое значение отправляется обработчику, и на основании этого значения из базы достаются новые значения для 2го селекта, очищаются элементы со 2м и 3м селектом, а затем вставляется новый 2й. При изменении 2го селекта, первый не трогается, удаляется 3й и заменяется на новый. Вот скрипт:
$(document).ready(function(){
	$("#p_cat select").change(function(){
		$.ajax({
			url: "/admin/dyn_select.php?cat="+$("#p_cat select").val()+"&id="+$("#id").val(),
			cache: false,
			success: function(html){
				$('#p_subcat').empty();
				$('#p_material').empty();
				$("#p_subcat").html(html);
			}
		});
	});
	$("#p_subcat select").change(function(){
		$.ajax({
			url: "/admin/dyn_select.php?subcat="+$("#p_subcat select").val()+"&id="+$("#id").val(),
			cache: false,
			success: function(html){
				$('#p_material').empty();
				$("#p_material").html(html);
			}
		});
	});
});

Но напоролся на проблему: если изменить сначала 1й селект, а затем 2й, то функция $("#p_subcat select").change(function(){} не выполняется, если в обратном порядке, то все работает. Что не так сделал? Заранее спасибо за ответы

PS: поменял функции местами - не выполняется все та же функция $("#p_subcat select").change(function(){}. Почему-то скрипт не работает на сгенерированный функцией $("#p_cat select").change(function(){} селект

Последний раз редактировалось zevilz, 26.10.2012 в 17:59.
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2012, 21:07
Аватар для a_l
a_l a_l вне форума
Кандидат Javascript-наук
Отправить личное сообщение для a_l Посмотреть профиль Найти все сообщения от a_l
 
Регистрация: 15.09.2011
Сообщений: 143

http://api.jquery.com/empty/
Цитата:
To avoid memory leaks, jQuery removes other constructs such as data and event handlers from the child elements before removing the elements themselves.

If you want to remove elements without destroying their data or event handlers (so they can be re-added later), use .detach() instead.
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2012, 09:03
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Спасибо, разобрался)
$(document).ready(function(){
	$("#p_subcat select").change(function(){
		$.ajax({
			url: "/admin/dyn_select.php?subcat="+$("#p_subcat select").val()+"&id="+$("#id").val(),
			cache: false,
			success: function(html){
				$('#p_material option').detach();
				$("#p_material select").html(html);
			}
		});
	});
	$("#p_cat select").change(function(){
		$.ajax({
			url: "/admin/dyn_select.php?cat="+$("#p_cat select").val()+"&id="+$("#id").val(),
			cache: false,
			success: function(html){
				$('#p_subcat option').detach();
				$('#p_material option').detach();
				$("#p_subcat select").html(html);
			}
		});
	});

});

Сейчас все работает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery. Запрет выполнения события если другое уже выполняется. Kostyk92 Элементы интерфейса 4 09.03.2012 23:46
Условие: если функция выполняется raler jQuery 5 21.04.2011 00:06
Выполняется функция, а все что написано после нее игнорируется, libinstyle Элементы интерфейса 4 24.03.2010 16:44
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
В качестве параметра функции другая функция, как? Sintez Я не знаю javascript 13 11.06.2009 11:10