Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.09.2014, 14:39
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

помогите пожалуйста разобраться плавлюсь
Пробую яснее изложить проблему.
У меня есть форма в которую добавляются зависимые списки стран по нажатию кнопки добавить и предполагается что поочередно снизу вверх эти списки можно удалять кнопкой удалить
Вот часть кода отвечающая за добавление новых списков с комментарием, вопрос после кода.
function add_new_resort_func(){
//при нажатии на кнопку добавить происходит событие
$('.add_resort_btn').click(function(){
//определяем номер в классе блока в котором нажата кнопка добавить  
var main_par =$('.add_resort_select')
var last_block=main_par.children().last()
var classList = last_block.attr('class').split(/\s+/);
var numer=classList[1].charAt( classList[1].length - 1 );
numer=Number(numer);
//добавляем последующий блок для зависимых списков
var n=numer+1
$('.add_resort_select').append('<div class="blk resort_select_blk_'+n+'"></div>');
//аяксом вставляем в этот блок селект со странами
 $.ajax({
          type: 'POST',
		  dataType:'json',
          url: '/functions_ajax/get_countries/',
          success: function(data) {
		  $('.resort_select_blk_'+n+'').append('<div class="resorts_number"><h3>'+(n+1)+'</h3></div>');
		  $('.resort_select_blk_'+n+'').append('<select class="country_select" name="country_'+n+'"><option>Выберите страну для курорта</option></select><input type="button" class="del_button del_resort_btn" value="X">');
		  $('.add_resort_btn').remove();
			$.each(data, function(key, val) {  
			$('select[name=country_'+n+']').append('<option value="'+val.id+'">'+val.name+'</option>');
			})
        //эта функция добавляет курорты по выбранной стране
			cnt_change()
        //далее предполагаем что необходимо удалить последний блок с зависимыми селектами при нажатии на кнопку удалить
			$('.del_resort_btn').on( "click", function() {
$(this).parent('.blk').siblings(':last').append('<input type="button" class="add_button add_resort_btn" value="+">');
$(this).parent('.blk').remove();
//вот здесь инициализируем главную функцию снова чтобы при нажатии на кнопку добавить добавлялись блоки с зависимыми селектами тут и возникает вопрос
add_new_resort_func()
});
		
          },
          error:  function(xhr, str){
          alert('Возникла ошибка: ' + xhr.responseCode);
          }
}); 
});		
}

почему при многократном нажатии на кнопку удалить, тоесть поочередном удалении многих блоков с зависимыми селектами, а затем при нажатии на кнопку добавить появляется столько блоков с зависимыми селектами сколько раз они были удалены, требуется чтобы один блок добавлялся при нажатии на кнопку добавить
Демонстрация работы формы http://interclient.net/admin_tours/create_tourдва раза пролистнуть вправо затем выбирать австралия

Последний раз редактировалось imedia, 08.09.2014 в 12:24.
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2014, 12:26
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Я изменил постановку вопроса, помогите кто понимает пожалуйста
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2014, 14:11
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Да Вы правы но к сожалению сути вопроса это не решит
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2014, 16:02
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Потому что при каждом показе кнопки "добавить", вы навешиваете событие click всем кнопкам "удалить". И чем больше "добавляете", тем больше будет одновременных вызовов при нажатии на любую из "удалить".
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2014, 17:01
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Сообщение от WorM32 Посмотреть сообщение
Потому что при каждом показе кнопки "добавить", вы навешиваете событие click всем кнопкам "удалить". И чем больше "добавляете", тем больше будет одновременных вызовов при нажатии на любую из "удалить".
как быть тогда?
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2014, 17:38
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

imedia,
Можно повесить обработчик на родителя и фильтровать нужные элементы по селектору.
$(document).on('click', '.del_resort_btn', function () {
    ...
}
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2014, 12:27
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

спасибо огромное, все гениальное просто
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста разобраться Дмитрий Петров Events/DOM/Window 11 05.08.2013 19:24
Помогите пожалуйста разобраться со скриптом Shalty Opera, Safari и др. 1 21.01.2013 16:41
Ребята помогите пожалуйста разобраться stalnoy Общие вопросы Javascript 1 21.10.2012 23:38
Помогите пожалуйста девушке разобраться Feni4ka jQuery 10 26.04.2011 19:25
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44