Показать сообщение отдельно
  #8 (permalink)  
Старый 22.12.2013, 03:19
Новичок на форуме
Отправить личное сообщение для vertigo Посмотреть профиль Найти все сообщения от vertigo
 
Регистрация: 20.12.2013
Сообщений: 6

Выходит, что количество добавленных элементов напрямую влияет на вызов нестандартного обработчика.

Например, если в селекте выбрать пункт 1 - DVD title, то создадутся 2 элемента, каждый из которых вызовет нестандартный обработчик.

Если выбрать Viewed, то он создаст 5 элементов и, опять же, каждый вызовет нестандартный обработчик adjustName.

До меня очень долго доходило, что trigger применяется к полученному обернутому набору. А в данном случае этот набор состоит из нескольких элементов.

Сделал вот так:

$("#addFilterButton").click(function() {
				var filterItem = 	$("<div>").addClass("filterItem")
											.appendTo("#filterPane")
											.data("suffix", "." + (filterCount++));
									$("div.template.filterChooser").children()
											.clone()
											.appendTo(filterItem);
											filterItem.trigger("adjustName");
			});
			$("#filterPane").on("adjustName", ".filterItem", function() {
				alert("yes");
				var suffix = $(this).data("suffix");
				if (/(\w)+\.(\d)+$/.test($(this).attr("name"))) {
					return;
				}
				$(this).attr("name", "filter" + suffix);
			});
			$(document).on("change", "select.filterChooser", function() {
				var filterType = $(":selected",this).attr("data-filter-type");
				var filterItem = $(this).closest(".filterItem");
				$(".qualifier", filterItem).remove();
				$("div.template." + filterType)
					.children()
					.clone()
					.addClass("qualifier")
					.appendTo(filterItem);
				filterItem.trigger("adjustName");
				$("option[value='']",this).remove();
			});


Вроде, получил то, что хотел.
Ответить с цитированием