Поместите код аккордеона в обратный вызов.
$("#addpage").click(function(){
$.get("addpage.php", function(data){
$(data).insertAfter(".accordion div#[id^=element]:last");
$(".accordion").accordion('destroy');
callAccordion();
});
});
в противном случае он вызывается до того, как вызов ajax добавляет новую форму в аккордеон .. ( это происходит потому, что вызов ajax .get()
является асинхронным )
Конкретная ошибка, о которой вы упомянули, может быть вызвана тем, что происходит внутри метода callAccordion()
, который мы не можем увидеть ... так что ничего не поделаешь, пока вы не опубликуете код этого тоже ..
[Update]
Я создал небольшое обновление для плагина ( не проверено ), которое может удовлетворить ваши потребности ..
update: function() {
var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
for(a = 0; a < inputs.length; a++) {
if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "styled") {
if((!inputs[a].previousSibling) || (inputs[a].previousSibling && inputs[a].previousSibling.className != inputs[a].type)){
span[a] = document.createElement("span");
span[a].className = inputs[a].type;
if(inputs[a].checked == true) {
if(inputs[a].type == "checkbox") {
position = "0 -" + (checkboxHeight*2) + "px";
span[a].style.backgroundPosition = position;
} else {
position = "0 -" + (radioHeight*2) + "px";
span[a].style.backgroundPosition = position;
}
}
inputs[a].parentNode.insertBefore(span[a], inputs[a]);
inputs[a].onchange = Custom.clear;
if(!inputs[a].getAttribute("disabled")) {
span[a].onmousedown = Custom.pushed;
span[a].onmouseup = Custom.check;
} else {
span[a].className = span[a].className += " disabled";
}
}
}
}
},
Добавьте этот метод в плагин и вызовите Custom.update()
сразу после вставки нового содержимого на вашу страницу, сразу после $(data).insertAfter(".accordion div#[id^=element]:last");