Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ошибка в коде - добавления блока с выпадающими списками (https://javascript.ru/forum/jquery/18309-oshibka-v-kode-dobavleniya-bloka-s-vypadayushhimi-spiskami.html)

Santiago 25.06.2011 19:37

Ошибка в коде - добавления блока с выпадающими списками
 
Вложений: 1
Добрый день, пытаюсь написать код, но пока никак не получается, уже не знаю как быть... сам я новичок, поэтому очень надеюсь на вашу помощь. Если есть у кого соображения, поделитесь...
Суть вот в чем:
На вложенном рисунке я показал чего хочу добиться.
Есть два выпадающих списка и кнопка "add". При нажатии на неё в низу должно появляться точно такое же, но с кнопкой "del" и так 10 штук и соответственно при нажатии этой кнопки списки выпадающий должны исчезать.
И все это находится в тегах <table></table>. Слева от списков находятся названия их. (на рисунке не показана)
вот что я сам написал, но ничего не работает.
JS
$(function(){
$('.add').click(function(){
$('boxLevel').show();	
});
$(function(){
$('.del').click(function(){
$('boxLevel').hide();	
}); 
}); 
});


HTML
<div id="boxLevel">
<select name="name" id="name"">
<option value="1">1</option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
</select>
-
 <select name="family" id="family">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
</select>
<span class="add"><a href="">add</a></span>
</div>

SkyLight 26.06.2011 13:04

И не будет, т.к. куча ошибок. Во-первых, что за $('boxLevel')? Решетка где? Во-вторых, секция $('.del').click(...) не сработает хотя бы потому, что у вас нет такого элемента.

Вам нужно при клике на add дублировать ваши два селекта и при этом нужно менять id копий, т.к. на странице не может быть двух элементов с одним id. При клике на del удалять строку.

Santiago 26.06.2011 15:17

Cо всеми ошибками я разобрался, спасибо.
При нажатии "add" у меня добавлят сразу столько строк, сколько изначально было написано в html'е и спрятано, путем CSS ( "display:none" ).
А как сделать, чтобы при каждом нажатии добавляась только одна строчка... ? Нужно прописывать какое-то условие?

SkyLight 26.06.2011 17:24

В том коде, что у вас приведен выше, вы вообще ничего не добавляете. Вы показываете/скрываете имеющиеся. Попробуйте именно создавать новые элементы. Например, с помощью clone

Santiago 27.06.2011 01:15

Посоветовали этот вариант, но тоже так и не заработал...
row = $('<div class="boxLevel">
  <select name="name" id="name"">
  бла-бла-бла
  <span class="delete"><a href="">delete</a></span>
  </div>');
  
row.find('.delete').click(function(){
  $(this).closest('.boxLevel').remove();
  return false;
});
 
$('.add').click(function(){
  $(<во что вставить>).append(row.clone());
  return false;
});

Santiago 29.06.2011 19:57

row = $('<div class="boxLevel">
  <select name="name" id="name"">
  бла-бла-бла
  <span class="delete"><a href="">delete</a></span>
  </div>');
  
row.find('.delete').click(function(){
  $(this).closest('.boxLevel').remove();
  return false;
});
 
$('.add').click(function(){
  $('.sometable .elements-con').append(row.clone());
  return false;
});


Код сам рабочий, но почему то при нажатии delete - убирает все списки выпадающие, а не только то что напротив...
в чем может быть причина, подскажите.


Часовой пояс GMT +3, время: 13:44.