Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.02.2011, 19:25
Интересующийся
Отправить личное сообщение для vitja Посмотреть профиль Найти все сообщения от vitja
 
Регистрация: 27.03.2010
Сообщений: 17

Проблема с clone() dom элемента.
Здравствуйте, пытаюсь сделать создание копии элемента и добавление класса элементу с инкрементным id. То есть при нажатии на ссылку (Например Добавить поле), должны создаваться новые поля file . Делаю так, но работает это не корректно
$("#add-file-field").click (function() {
		var i=0;
		$(".file_inp").each(function() {
	 $(".file_inp").clone().appendTo('body').addClass(i++);

			});
	});

Уже и без использования цикла, и с $this, всё безуспешно. Что не так, подскажите пожалуйста. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 03.02.2011, 10:06
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<script src="http://code.jquery.com/jquery-1.5.min.js"></script>
<script>
$(function(){
    var i=0;
    $('a').click(function() {
        $(this).clone(true).appendTo('body').text($(this).text()+i+++' : ');
         return false;
    });
});
</script>

<a href="#">click</a>
Ответить с цитированием
  #3 (permalink)  
Старый 03.02.2011, 11:14
Интересующийся
Отправить личное сообщение для vitja Посмотреть профиль Найти все сообщения от vitja
 
Регистрация: 27.03.2010
Сообщений: 17

monolithed, спасибо большое, вы меня немного опередили , впринципи мы с вами всё одинаково почти сделали, но только нужно добавить этот айдишник в класс .file_Inp , допустим, там уже буду добавлять по дому куда нужно будет(например в ....name = userfile[id].....) в этом tr.file_Inp ..

var i=0;
			   $("#cloneButton").click(function () {
$('.file_Inp:first').clone(true).insertAfter(this).appendTo('#Add_Object_Table');       
		  });


У вас получалось вы клонировали текущий элемент #cloneButton, у меня же , как видите, клонируется весь участок элементов tr.file_Inp , вместе с баттоном #cloneButton. ((( Как сюда впилить это id?

Последний раз редактировалось vitja, 03.02.2011 в 11:22.
Ответить с цитированием
  #4 (permalink)  
Старый 03.02.2011, 11:15
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Сообщение от vitja
но работает это не корректно
ничего удивительного, присмотрись - ты пускаешь цикл по всем элементам класса, а внутри работаешь не с тем что перебирается в цикле а со всеми.
$(this).clone()

С инкрементом не совсем понял. В пределах одного добавления классы уникальные?
Ответить с цитированием
  #5 (permalink)  
Старый 03.02.2011, 12:07
Интересующийся
Отправить личное сообщение для vitja Посмотреть профиль Найти все сообщения от vitja
 
Регистрация: 27.03.2010
Сообщений: 17

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

Сообщение от micscr Посмотреть сообщение
С инкрементом не совсем понял. В пределах одного добавления классы уникальные?
Давайте я вам покажу на моём примере, сразу всё поймёте..
<tr class="file_Inp">
				<td>				
				<input type="file" name="userfile[id]">
				<a href="#" id="cloneButton">Добавить</a> 
				</td>
			</tr>

Сейчас у меня tr-ки создаются, по схеме
$("#cloneButton").click(function () {
$('.file_Inp:first').clone(true).insertAfter(this).appendTo('#Add_Object_Table');

При этом необходимо инкрементировать id в input name. Выше я показал в части html кода.
Т.е userfile[1] , userfile[2], userfile[3]. А там уже в php буду обрабатывать массив файлов..

Последний раз редактировалось vitja, 03.02.2011 в 12:14.
Ответить с цитированием
  #6 (permalink)  
Старый 03.02.2011, 12:18
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

id++;
var $new = $('.file_Inp:first').clone(true).insertAfter(this).appendTo('#Add_Object_Table');
$new.find('input').attr('name', 'userfile[' + id + ']');


id - сделай глобальной и установи вначале значение - по тем что имеются.
Ответить с цитированием
  #7 (permalink)  
Старый 03.02.2011, 13:40
Интересующийся
Отправить личное сообщение для vitja Посмотреть профиль Найти все сообщения от vitja
 
Регистрация: 27.03.2010
Сообщений: 17

Сообщение от micscr
id - сделай глобальной и установи вначале значение - по тем что имеются.
Включил немного логики, поправил, всё заработало. И вот наша с вами фича, как по мне очень даже нужная ).
var id=0;
$('.file_Inp').each( function() {
		
			   $("#cloneButton").click(function () {
				   id++;
				   alert(id);
				   var c  =  $('.file_Inp:first').clone(true).insertAfter(this).appendTo('#Add_Object_Table'); 
				   c.find('input').attr('name', 'userfile['  + id + ']');
		  });
			   
			  
	});

Последний раз редактировалось vitja, 03.02.2011 в 13:44.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить порядковый номер элемента DOM ? dummer jQuery 7 17.01.2014 17:44
Проблема с поиском эелемента DOM по name lenok jQuery 6 03.02.2011 12:08
onClick эвент для всего документа, кроме отдельно взятого элемента DOM el_erizo Events/DOM/Window 5 19.03.2010 15:09
удаление DOM элемента и перезагрузка страницы Andrey2005 Общие вопросы Javascript 3 12.10.2009 23:49
Как определить id дочернего элемента DOM? Motonto Events/DOM/Window 1 09.04.2009 08:13