Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2014, 07:15
Аспирант
Отправить личное сообщение для JustCrazy Посмотреть профиль Найти все сообщения от JustCrazy
 
Регистрация: 20.07.2012
Сообщений: 64

jquery, почему клик срабатывает более чем 1 раз ?
Добрый день гуру js, у меня к вам вопрос такого характера:

есть у меня селект и кнопка
<select class='ins'>
<option value='1' index='one'>one bla bla</option>
<option value='2' index='two'>two bla bla</option>
<option value='3' index='three'>three bla bla</option>
</select>
<button class='ins'>click</button>

<div id='place'></div>

на нее жмякаем и она в назначенном месте создает еще один селект с кнопкой (для удаления), а из нашего опция эта удаляется
$('button.ins').click(function(){															//клик на кнопку вставки,
  var NewMfClass = $('select.ins option:selected').val();									//берем параметры опции для
  var NewMfIndex = $('select.ins option:selected').attr('index');							//создания нового селекта.
  $('select.ins option:selected').remove();														//удаляем выбранную опцию
  var s = '<select class="'+NewMfClass+'">';													
  s += '<option value="0" price="50">'+NewMfIndex+' bla-bla 1</option>';								//создаем селект-i
  s += '<option value="5" price="30">'+NewMfIndex+' bla-bla 2</option>';
  s += '</select><button class="remove" remIndex="'+NewMfIndex+'" remClass="'+NewMfClass+'">Удалить</button>';
  $('#place').append(s);

  $('button.remove').click(function(){														//клик для удаления селекта-i
    var RemoveClass = $(this).attr('remClass');												//берем необходимые параметры
    var RemoveIndex = $(this).attr('remIndex');
    $('select.ins').append('<option value="'+RemoveClass+'" index="'+RemoveIndex+'">'+RemoveIndex+' bla bla</option>');//возвращаем опцию в селект-1
  });
});

затем, когда в нашем месте мы жмякаем удалить, наш селект удаляется и опция возвращается на место.
так вот проблема в том, что когда в место помещаю сразу 2-3 новых селекта, при удалении одного возвращается не одна опция, а сразу 2-3 одинаковых.
т.е. клик у меня срабатывает несколько раз.
подскажите как быть? чего сделать?
и еще, как мне новый добавляемый элемент сделать глобальным ?

спасибо за уделенное внимание

Последний раз редактировалось JustCrazy, 28.08.2014 в 09:12.
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2014, 08:29
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

погоди что то я не понял. что тебе нужно. при нажатии на кнопку селект будет удаляться? а как тогда создается новый селект? при выборе из списка этого селекта?
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2014, 09:05
Аспирант
Отправить личное сообщение для JustCrazy Посмотреть профиль Найти все сообщения от JustCrazy
 
Регистрация: 20.07.2012
Сообщений: 64

Сообщение от skrudjmakdak Посмотреть сообщение
погоди что то я не понял. что тебе нужно. при нажатии на кнопку селект будет удаляться? а как тогда создается новый селект? при выборе из списка этого селекта?
ну блин, я пример же привел, там все невооруженным глазом видно..

для опций-i селекта-1 создаются селекты-i, при этом удаляя опции-i.

при удалении селекта-i опции возвращаются на место.
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2014, 09:22
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

потому что ты навешиваешь несколько обработчиков. вот смотри:
выбрал селект, нажал кнопку, у тебя создался еще 1 селект и кнопка для удаления и на эту кнопку ты навесил событие найдя эту кнопку вот так: $('button.remove')

потом ты снова выбрал селект ... и снова ты навешиваешь событие но уже на две кнопки, так как $('button.remove') тебе уже найдет 2 таких кнопки. и у тебя получается, что на первой кнопке у тебя навешано 2 события, а на 2й пока что 1но событие. идем далее:

снова выбираем селект ... и снова ты навешиваешь событие, в этот раз уже на 3 кнопки, так как $('button.remove') тебе уже найдет аж 3 таких кнопки. и на первой кнопке у тебя уже аж 3 события. на второй кнопке 2 события, а на 3й - одно

делай хотябы так: $('button.remove:last')
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2014, 10:09
Аспирант
Отправить личное сообщение для JustCrazy Посмотреть профиль Найти все сообщения от JustCrazy
 
Регистрация: 20.07.2012
Сообщений: 64

Сообщение от skrudjmakdak Посмотреть сообщение
делай хотябы так: $('button.remove:last')
суть понял. $('button.remove:last') - вернет последнее событие на кнопке ? .. или он вернет последнюю кнопку с классом ремове?
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2014, 10:30
Аспирант
Отправить личное сообщение для JustCrazy Посмотреть профиль Найти все сообщения от JustCrazy
 
Регистрация: 20.07.2012
Сообщений: 64

все, теперь до конца разобрался, вернет последнее событие, спасибо большое
Ответить с цитированием
  #7 (permalink)  
Старый 28.08.2014, 10:33
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Сообщение от JustCrazy Посмотреть сообщение
все, теперь до конца разобрался, вернет последнее событие, спасибо большое
выведи в консоль console.log(...); и ты увидишь, что найдет последнюю кнопку из всей коллекции. так как надо привязать событие именно к последней кнопке, дабы предыдущие уже привязаны
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
plugin toggle for jquery или почему неработает toggle рони Ваши сайты и скрипты 0 10.11.2013 13:27
НОД более чем 2-х чисел Demath Общие вопросы Javascript 4 06.01.2013 05:27
почему событие срабатывает более одного раза garisson Элементы интерфейса 3 08.11.2012 05:22
jquery .dialog Проблема:Всплывающее окно -отображается только 1 раз! denisOgr AJAX и COMET 1 26.07.2010 20:51
Почему событие срабатывает один раз? igsavenko jQuery 6 03.03.2010 09:26