【发布时间】:2015-11-10 06:28:10
【问题描述】:
我有一架带有子手风琴的手风琴。当用户点击“New Topic”按钮时,它将通过克隆列表中的第一个手风琴来创建一个新的手风琴。但是,当这种情况发生时,对于添加的其他手风琴,子手风琴是不可排序的,但前两个初始手风琴的子手风琴是可排序的。
当您尝试对它们进行排序时,您可以看到手风琴拖动但位置没有更新,它只是回到原始位置。
关于为什么会发生这种情况的任何想法?下面是我目前编写的 JQuery 代码以及演示链接。
谢谢
var counter = 1;
var subCounter = 1;
var deleteSubcounter = 1;
var deleteCounter = 1;
var subFormCounter = 1;
$(function() {
indexFunction();
$('.accordion h3').click(function() {
if ($(this).next().is(':hidden')) {
var buttons = $(".remove")
$(this).find(buttons).hide();
} else {
$(".remove").show();
}
});
$('.Subgroup h3').click(function() {
if ($(this).next().is(':hidden')) {
var buttons1 = $(".removeSub")
$(this).find(buttons1).hide();
} else {
$(".removeSub").show();
}
});
$("#num").click(function() {
var aName = "accordion" + (counter + 1);
var tName = "subtopic" + (counter + 1);
var tInfo = "subtopicText" + (counter + 1);
var headerText = "Topic " + (counter + 1);
var buttonName = "submitInfo" + (counter + 1);
var divID = "abc" + (counter + 1);
var formID = "form" + (counter + 1);
var formTextName = subFormCounter + "subtopicText" + subCounter;
var subtopicName = subFormCounter + "subtopic" + subCounter;
var subPosition = subFormCounter + "position" + subCounter;
var subButtonName = subFormCounter + "submitButton" + subCounter;
var divSubName = (subFormCounter + 1) + "subAccordion" + subCounter;
counter++;
subFormCounter++;
indexFunction();
$(".group1:first").clone(true).appendTo("#main");
$(".group1:last").attr("name", aName);
$(".remove:last").css("visibility", "visible");
//$(".group1:last").attr("id", divID);
if (counter == 10) {
$("#num").attr("disabled", "disabled");
} else if (counter < 10) {
$("#num").removeAttr("disabled");
}
indexFunction();
});
$(".remove").click(function() {
$(this).parent().parent().remove();
counter--;
if (counter < 10) {
$("#num").removeAttr("disabled");
}
indexFunction();
});
$(".removeSub").click(function() {
$(this).parent().parent().remove();
subCounter--;
});
$("div.accordion")
.accordion({
header: "> div > h3",
collapsible: true,
heightStyle: "content",
active: false
})
.sortable({
axis: "y",
handle: "h3",
stop: function(event, ui) {
// IE doesn't register the blur when sorting
// so trigger focusout handlers to remove .ui-state-focus
ui.item.children("h3").triggerHandler("focusout");
indexFunction();
// Refresh accordion to handle new order
$("this").accordion("refresh");
}
});
$(".newSub1").click(function() {
if($('.accordion').hasClass('ui-accordion-content-active'))
{
var test = $( ".accordion" ).accordion( "option", "active" );
var active = $(".accordion #sub").eq(test)
var subName = "subAccordion" + (subCounter + 1);
var formName = "form" + (subCounter + 1);
var formTextName = subFormCounter + "subtopicText" + (subCounter + 1);
var subtopicName = subFormCounter + "subtopic" + (subCounter + 1);
var subPosition = subFormCounter + "position" + (subCounter + 1);
var subButtonName = subFormCounter + "submitButton" + (subCounter + 1);
var divSubName = subFormCounter + "subAccordion" + (subCounter + 1);
var divID = "abc" + (counter + 1);
subCounter++;
$(".Subgroup:first").clone(true).appendTo(active);
$(".info1:last").children(".formText1").val("");
$(".info1:last").children(".formText2").val("");
$(".info1:last").children(".formText3").val("");
$(".removeSub:last").css("visibility", "visible");
//var testIndex = $( ".Subgroup" ).index();
//$(".formText3").val(testIndex);
//$(".group1:last").attr("id", divID);
}
/*if (subCounter == 10) {
$(".newSub1").attr("disabled", "disabled");
} else if (counter < 10) {
$(".newSub1").removeAttr("disabled");
}*/
});
});
var indexFunction = function() {
var test1 = ($('div#abc1').index() + 1);
var test2 = ($('div#abc2').index() + deleteCounter);
var test3 = ($('div#abc3').index() + deleteCounter);
var test4 = ($('div#abc4').index() + deleteCounter);
var test5 = ($('div#abc5').index() + deleteCounter);
var test6 = ($('div#abc6').index() + deleteCounter);
var test7 = ($('div#abc7').index() + deleteCounter);
var test8 = ($('div#abc8').index() + deleteCounter);
var test9 = ($('div#abc9').index() + deleteCounter);
var test10 = ($('div#abc10').index() + deleteCounter);
$("#form1").children(".formText3").val(test1);
$("#form2").children(".formText3").val(test2);
$("#form3").children(".formText3").val(test3);
$("#form4").children(".formText3").val(test4);
$("#form5").children(".formText3").val(test5);
$("#form6").children(".formText3").val(test6);
$("#form7").children(".formText3").val(test7);
$("#form8").children(".formText3").val(test8);
$("#form9").children(".formText3").val(test9);
$("#form10").children(".formText3").val(test10);
};
【问题讨论】:
-
你的小提琴在 Chrome 中对我有用
-
您能够创建一个新主题并能够为该新主题对子手风琴进行排序?
-
是的,克隆按预期工作。第一个框中的任何文本都被克隆到新的手风琴中。将新创建的手风琴拖到第一个位置用于按预期克隆新的。我能够将新的手风琴拖到可用的位置。可以删除和重新创建。使用版本 46.0.2490.80 m
-
好吧,这很奇怪。我只是在另一台计算机上使用 Chrome 尝试了我的小提琴,但它不起作用。我创建了一个新的手风琴,打开新的手风琴并尝试对新手风琴中的手风琴进行排序,您可以拖动它们,但是当您释放时,选定的手风琴会弹回其原始位置。
-
我刚刚重试,它仍然对我有用。 :(