2013-06-27 5 views
0

Я уверен, что это очень легко сделать, но я застрял.Использование переменной из .closest() в селектор

У меня есть несколько форм на странице, каждый с кнопкой «duplicate».

Кнопка дублирует строку и помещает ее в конец таблицы, которая находится внутри каждой формы. Класс таблиц «.table-add». Поэтому я пытаюсь сказать кнопке, чтобы найти ближайший элемент формы и добавить его в путь на моем селекторе, но он не работает. Я знаю, что он может работать, если я поместил идентификатор в каждой форме и призову к ним, но это не то, что я хочу. Спасибо за помощь.

Это мой код:

i=0; 
$(".duplicate").on("click", function(e) { 
    i++; 
    $newID = 'clon'+i; 
    selectedObj = $($(e.target).closest("form")); 
    alert(selectedObj.html()); //**THIS WORKS** 
    $cloned = '<tr class="'+$newID+'">'+$(selectedObj+' .table-add tr:first').next().html()+'</tr>'; 
    $(selectedObj+' .table-add > tbody:last').append($cloned); 
}); 
+0

Вы забыли объявить все свои переменные ... – elclanrs

+0

@Joe Все они ... с 'var' – Ian

+0

uhhhh, post html ..... – Rooster

ответ

3

Просто используйте:

var i=0; 
$(".duplicate").on("click", function(e) { 
    i++; 
    var $newID = 'clon'+i; 
    var selectedObj = $(e.target).closest("form"); 
    alert(selectedObj.html()); //**THIS WORKS** 
    var $cloned = '<tr class="'+$newID+'">'+selectedObj.find('.table-add tr:first').next().html()+'</tr>'; 
    selectedObj.find('.table-add > tbody:last').append($cloned); 
}); 

selectedObj является объектом JQuery, так что вы можете использовать функцию .find() для выбора .table-add tr:first и '.table-add > tbody:last'.

+0

lol Я набрал то же самое. Я тоже ставил var, потому что я думаю, что ваше право и его прыжок, чтобы предположить, что его переменные объявлены правильно .... но затем он сказал, что предупреждение работает – Rooster

+0

var не имеет значения, этот ответ должен решить проблему из-за исправления последнее утверждение. –

+1

Я вижу много людей, которые используют 'find()', когда я, естественно, думаю о контексте: '$ ('. Table-add tr: first', selectedObj)'. Есть ли конкретная причина использовать 'find()' вместо этого? – landons