2013-09-17 3 views
0

Я работаю над плагином, который будет дублировать элемент. Я также хочу, чтобы этот плагин дал возможность удалить последний дублированный элемент. Например, пользователь нажимает на свою кнопку (может быть якорем, если захочет), и он дублирует элемент, добавляет идентификатор с добавочным целым числом (например, duplicated_node_2), а затем помещает дублированный элемент в указанное место. Как только это было размещено там, пользователь может щелкнуть отдельную кнопку (или привязать или что-то еще), и он удалит этот последний дублированный элемент.Удалить последний элемент в jQuery

Использование селектора с .click внутри плагина будет жестко задавать элемент. Я предпочел бы сделать так, чтобы плагин удалял последнюю вещь, дублированную. Я также не хочу использовать что-то вроде $ ('div # duplicated_node_2'). Last(). Remove() или даже что-то подобное.

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

Вот часть кода. Он посвящен процессу дублирования и прилагает к копии по умолчанию:

(function ($) { 
    $.fn.myDuplicatingFunction = function(options){ 
       ... 
       ... setting up the defaultOptions and checking if the idPrefix is undefined or not ... 
       ... [omitted from post] 
       ... 
var nodeToClone = this; 
     var n = 1; // counter declared 
     $(defaultOptions.duplicateButton).click(function(){ 
      n++; // increment that counter 
      var clonedNode = nodeToClone.clone(true); // clone the node and assign to new var 
      clonedNode.attr('id',defaultOptions.idPrefix + '_' + n); // update attr ID with the new one 
      $(clonedNode).appendTo(defaultOptions.copyToLocation); // append to location 
     }); 
/// trying to figure out the removal process 
$(defaultOptions.removeButton).click(function(){ 
      $(defaultOptions.copyToLocation).last().remove(); 
     }); 
    } 
}(jQuery)); 

Заранее благодарим за любой ваш отзыв.

Примечание: Я все еще довольно новичок в создании jQuery и плагинов. Если у вас есть положительная обратная связь по поводу организации кода или рекомендаций по эффективности, не стесняйтесь звонить.

Редактировать: Я оставил (0) для последним функции. Спасибо за уловку. У меня на самом деле был правильный код в моей среде IDE.

ответ

0

решенный.

$(defaultOptions.removeButton).click(function(){ 
      $(defaultOptions.copyToLocation).children().last().remove(); 
     }); 
1

последний является функцией. Так небольшое изменение в коде может сделать трюк:

$(defaultOptions.removeButton).click(function(){ 
     $(defaultOptions.copyToLocation).children().last().remove(); 
    }); 

Идея заключается в том, чтобы получить ребенок в хранилище предметов, которые вы получили ... то последний один ... потом удалить ...

0

.last() является метод

$(defaultOptions.removeButton).click(function(){ 
    $(defaultOptions.copyToLocation).last().remove(); 
             ^^ 
}); 
+1

Получил это. Спасибо, что поймал это. Я обновил свой пост. – rdldew

0

вы можете попытаться взорвать каждый из И.Д. clonedNode в $ (defaultOptions.copyToLocation), и захватить его с помощью большего числа, чем вы теперь последний!

Или просто удалить последние дети, которые, как

$(defaultOptions.copyToLocation).children().last().remove(); 
Смежные вопросы