我有树列表但我需要在排序完成时获取父值和子值。
jquery的
var jsonObj = {
"department":{
"Title1":[
{
"child1":"Green",
"child2":"Yellow"
},
{
"child3":"Black",
"child4":"White"
}
],
"Title2":[
{
"child5":"Violet",
"child6":"Purple"
},
{
"child7":"Pink",
"child8":"Orange"
}
]
}
}
var addPositions = function() {
$('.droptrue, .droptrue1').each(function() {
var position = 0;
$(this).children().each(function() {
$(this).data('position', position);
position++;
});
});
};
$(document).ready(function() {
var treeList = "";
treeList = "<ul id=\"createTree\" class=\"droptrue1 mt1\">";
for(var key in jsonObj){
//alert("key: " + key + ", value: " + jsonObj[key])
for (var skey in jsonObj[key]) {
treeList += ("<li class=\"listTree\" id="+skey+"><span class=\"Tbltitle\" >"+skey +"</span><ul class=\"droptrue mt\">");
for (var sskey in jsonObj[key][skey]){
for (var ssskey in jsonObj[key][skey][sskey]){
treeList += ("<li class=\"innerList\">"+jsonObj[key][skey][sskey][ssskey]+"</li>");
}
}
treeList += "</ul></li>";
}
}
treeList += "</ul>";
$('#tree').append(treeList);
addPositions();
$(".droptrue").sortable({
connectWith: "ul.mt",
dropOnEmpty: true,
/* start: function(event, ui) {
var order = [];
ui.item.closest('ul').children('li').each(function() {
order.push($(this).data('position'));
var x = $(this).not(':first').text();
var y = $(this).parent().siblings('.Tbltitle').text();
$("#c2").append(y+"_"+x+"<br />");
});
},
*/ stop: function(event, ui) {
var order = [];
ui.item.closest('ul').children('li').each(function() {
order.push($(this).data('position'));
var c = $(this).text();
var z = $(this).parent().siblings('.Tbltitle').text();
$("#cl").append(z+"_"+c+"<br />");
});
}
});
$( "ul.droptrue1").sortable({
connectWith: "ul.mt1",
dropOnEmpty: true,
});
});
答案 0 :(得分:0)
好的,现在我明白了你需要的东西(我希望)
var origTitle;
var origColor;
$(".droptrue").sortable({
connectWith: "ul.mt",
dropOnEmpty: true,
start: function(event, ui) {
origColor = ui.item.text();
origTitle = ui.item.parent().siblings('.Tbltitle').text();
},
stop: function(event, ui) {
var order = [];
ui.item.closest('ul').children('li').each(function() {
order.push($(this).data('position'));
var c = $(this).text();
if (c === origColor) {
var z = origTitle;
} else {
var z = $(this).parent().siblings('.Tbltitle').text();
}
$("#cl").append(z + "_" + c + "<br />");
});
}
});
答案 1 :(得分:0)
$(this).not(':first').text()
将引用li
元素,而不引用ul
元素。
尝试这样的事情:http://jsfiddle.net/mwypv/13/