У меня есть этот скрипт (один из моих первых), который я имел немного помочь развивающимся: http://jsfiddle.net/spadez/AYUmk/2/избежать дублирования кода для функции JQuery
var addButton =$("#add"),
newResp = $("#resp_input"),
respTextArea = $("#responsibilities"),
respList = $("#resp");
//
function Responsibility(text){
this.text=text;
}
var responsibilities = [];
function render(){
respList.html("");
$.each(responsibilities,function(i,responsibility){
var el = renderResponsibility(responsibilities[i],function(){
responsibilities.splice(i,1);//remove the element
render();//re-render
});
respList.append(el);
});
respTextArea.text(responsibilities.map(function(elem){
return elem.text;//get the text.
}).join("\n"));
}
addButton.click(function(e){
var resp = new Responsibility(newResp.val());
responsibilities.push(resp);
render();
newResp.val("");
});
function renderResponsibility(rep,deleteClick){
var el = $("<li>");
var rem = $("<a>Remove</a>").click(deleteClick);
var cont = $("<span>").text(rep.text+" ");
return el.append(cont).append(rem);
}
Использование приставке можно добавить обязанности в текст введите их в поле ввода и нажмите «Добавить». Это отлично работает для моего первого ящика, но мне нужно, чтобы это работало для трех разных ящиков, и теперь я немного зациклился на том, как применить эту функцию ко всем трем примерам «ответственность, тест, тест2», не просто дублируя код три времени и изменения переменных.
Я уверен, что этот тип вещей должен появиться много, но я не уверен, что его можно избежать. Надеюсь, кто-то, у кого больше опыта работы с javascript, может пролить свет на это.
так, не используют идентификаторы, использовать класс вместо этого. –
Хорошо, это хорошее предложение, но как избежать того, чтобы скрипт помещал список в правильное поле ввода. Т.е. test2 в test2 –
сначала вы должны обернуть каждый блок внутри контейнера (div), тогда целевые элементы будут очень легкими: $ (this) .closest ('. Container'). Find ('. Tasks'), и т. д. –