Что-то не так с вашей функцией addStep()
. Я постараюсь объяснить, добавив несколько комментариев к вашему исходному коду:
function addStep() {
// Here, you store a reference to the jQuery Object containing the clone in the var temp.
var temp = $('.template').clone();
// Here, you wrap temp (which already is a jQuery Object) inside $().
// Fix: replace '$(temp)' by 'temp'
$(temp).removeClass('template');
$(temp).addClass('sort');
$('#sortable').append(temp);
}
После исправления этого, плюс некоторые дополнительные оптимизации, это становится:
function addStep() {
$('.template').clone().removeClass('template').addClass('sort').appendTo('#sortable');
}
Кроме того, ваша removeStep()
функция неправильно использует this
. Вы, вероятно, хотите сделать следующее:
$.fn.removeStep = function() {
// `this` is now a reference to the jQuery Object on which `.removeStep()` was invoked
this.closest('div.sort').remove();
$('#sortable').sortable('refresh');
// Allow chaining
return this;
}
Теперь вы можете опустить onclick="removeStep();"
из вашего HTML-шаблона и использовать что-то подобное в jQuery:
$('.remove').live('click', function() {
$(this).removeStep();
}