- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我被难住了。我一直在尝试解决这个问题 2 天,并在网上查看了所有内容,包括本网站。这非常令人沮丧,如果您能解决它,我将印象深刻。
我正在使用 Interspire 购物车,它使用 jQuery 插件 nestedsortables (http://code.google.com/p/nestedsortables/wiki/NestedSortableDocumentation) 通过拖放来安排管理面板中页面的顺序.这是执行相同操作的不同脚本的演示:http://mjsarfatti.com/sandbox/nestedSortable/
问题是父页面(在列表中,而不是实际页面)可以被拖入任何顺序,包括进入嵌套的子位置并退出(直到刷新,然后它停留在子位置).子页面不能拖拽/移动,光标像父页面一样变为四向箭头。
我已经检查了 HTML 很多次了,我都记不清了。 HTML 对于 parent 和 child 来说看起来几乎相同,我可以弄清楚为什么一个可以工作,一个不能。我认为这可能与 ul 或 li 标签有关,但我只是看不出问题所在。
我将我的代码与 Interspire 演示 (http://shoppingcart.interspire-demo.com/demos) 的代码进行了比较,没有发现任何差异。他们的管理面板有效,我的没有。我尝试重新上传控制此功能的 2 个 JavaScript 文件,但问题仍然存在。
这是一个 HTML 片段:
<table class="GridPanel SortablePanel" cellspacing="0" cellpadding="0" border="0" style="width: 100%; margin-top: 10px;">
<tbody>
<tr class="Heading3">
<td width="1" style="padding-left: 5px;">
<input type="checkbox" style="vertical-align: middle;" onclick="ToggleDeleteBoxes(this.checked)">
</td>
<td> Page Name </td>
<td width="120"> Page Type </td>
<td width="80" align="center"> Visible </td>
<td width="80"> Action </td>
</tr>
</tbody>
</table>
<ul id="PageList" class="SortableList">
<li id="ele-5" class="SortableRow"></li> << **collapsed**
<li id="ele-3" class="SortableRow"></li> << **collapsed**
<li id="ele-11" class="SortableRow">
<table class="GridPanel" cellspacing="0" cellpadding="0" border="0" style="width: 100%;">
<tbody>
<tr class="GridRow" onmouseout="this.className='GridRow'" onmouseover="this.className='GridRowOver'">
<td width="1">
<input type="checkbox" value="11" name="page[]">
</td>
<td width="150" style="display: none;"> </td>
<td class="DragMouseDown sort-handle " style="-moz-user-select: none;"> PARENT </td>
<td class="HideOnDrag " width="120">Normal Page</td>
<td class="HideOnDrag " width="80" align="center">
<a href="index.php?ToDo=editPageVisibility&pageId=11&visible=1" title="Click here to make this page visible on your web site">
<img border="0" src="images/cross.gif">
</a>
</td>
<td class="HideOnDrag" width="80">
<a href="javascript:PreviewPage(11)" title="Preview Page">Preview</a>
<a href="index.php?ToDo=editPage&pageId=11" title="Edit this page">Edit</a>
</td>
</tr>
</tbody>
</table>
<ul class="SortableList" style="padding-left: 30px; padding-right: 0px;">
<li id="ele-12" class="SortableRow">
<table class="GridPanel" cellspacing="0" cellpadding="0" border="0" style="width: 100%;">
<tbody>
<tr class="GridRow" onmouseout="this.className='GridRow'" onmouseover="this.className='GridRowOver'">
<td width="1">
<input type="checkbox" value="12" name="page[]">
</td>
<td width="150" style="display: none;"> </td>
<td class="DragMouseDown sort-handle " style="-moz-user-select: none;"> CHILD ONE </td>
<td class="HideOnDrag " width="120">Normal Page</td>
<td class="HideOnDrag " width="80" align="center">
<a href="index.php?ToDo=editPageVisibility&pageId=12&visible=1" title="Click here to make this page visible on your web site">
<img border="0" src="images/cross.gif">
</a>
</td>
<td class="HideOnDrag" width="80">
<a href="javascript:PreviewPage(12)" title="Preview Page">Preview</a>
<a href="index.php?ToDo=editPage&pageId=12" title="Edit this page">Edit</a>
</td>
</tr>
</tbody>
</table>
</li>
<li id="ele-13" class="SortableRow">
<table class="GridPanel" cellspacing="0" cellpadding="0" border="0" style="width: 100%;">
<tbody>
<tr class="GridRow" onmouseout="this.className='GridRow'" onmouseover="this.className='GridRowOver'">
<td width="1">
<input type="checkbox" value="13" name="page[]">
</td>
<td width="150" style="display: none;"> </td>
<td class="DragMouseDown sort-handle " style="-moz-user-select: none;"> CHILD TWO </td>
<td class="HideOnDrag " width="120">Normal Page</td>
<td class="HideOnDrag " width="80" align="center">
<a href="index.php?ToDo=editPageVisibility&pageId=13&visible=1" title="Click here to make this page visible on your web site">
<img border="0" src="images/cross.gif">
</a>
</td>
<td class="HideOnDrag" width="80">
<a href="javascript:PreviewPage(13)" title="Preview Page">Preview</a>
<a href="index.php?ToDo=editPage&pageId=13" title="Edit this page">Edit</a>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div id="div1" style="display: none;">
</div>
</td>
</tr>
</tbody>
</table>
我将页面命名为 PARENT、CHILD ONE 和 CHILD TWO。 2 个子页面嵌套在父页面中。父级可拖动,但 2 个嵌套页面不可拖动。
以下是 NestedSortable jQuery Plugin 代码供您引用:
jQuery.iNestedSortable = {
checkHover: function (e, o) {
if (e.isNestedSortable) {
jQuery.iNestedSortable.scroll(e);
return jQuery.iNestedSortable.newCheckHover(e)
} else {
return jQuery.iNestedSortable.oldCheckHover(e, o)
}
},
oldCheckHover: jQuery.iSort.checkhover,
newCheckHover: function (e) {
if (!jQuery.iDrag.dragged) {
return
}
if (!(e.dropCfg.el.size() > 0)) {
return
}
if (!e.nestedSortCfg.remeasured) {
jQuery.iSort.measure(e);
e.nestedSortCfg.remeasured = true
}
var a = jQuery.iNestedSortable.findPrecedingItem(e);
var b = jQuery.iNestedSortable.shouldNestItem(e, a);
var c = (!a) ? jQuery.iNestedSortable.isTouchingFirstItem(e) : false;
var d = false;
if (a) {
if (e.nestedSortCfg.lastPrecedingItem === a && e.nestedSortCfg.lastShouldNest === b) {
d = true
}
} else if (e.nestedSortCfg.lastPrecedingItem === a && e.nestedSortCfg.lastTouchingFirst === c) {
d = true
}
e.nestedSortCfg.lastPrecedingItem = a;
e.nestedSortCfg.lastShouldNest = b;
e.nestedSortCfg.lastTouchingFirst = c;
if (d) {
return
}
if (a !== null) {
if (b) {
jQuery.iNestedSortable.nestItem(e, a)
} else {
jQuery.iNestedSortable.appendItem(e, a)
}
} else if (c) {
jQuery.iNestedSortable.insertOnTop(e)
}
},
scroll: function (e) {
if (!e.nestedSortCfg.autoScroll) {
return false
}
var a = e.nestedSortCfg.scrollSensitivity;
var b = e.nestedSortCfg.scrollSpeed;
var c = jQuery.iDrag.dragged.dragCfg.currentPointer;
var d = jQuery.iUtil.getScroll();
if ((c.y - d.ih) - d.t > -a) {
window.scrollBy(0, b)
}
if (c.y - d.t < a) {
window.scrollBy(0, -b)
}
},
check: function (a) {
jQuery.iNestedSortable.newCheck(a);
return jQuery.iNestedSortable.oldCheck(a)
},
oldCheck: jQuery.iSort.check,
newCheck: function (a) {
if (jQuery.iNestedSortable.latestNestingClass && jQuery.iNestedSortable.currentNesting) {
jQuery.iNestedSortable.currentNesting.removeClass(jQuery.iNestedSortable.latestNestingClass);
jQuery.iNestedSortable.currentNesting = null;
jQuery.iNestedSortable.latestNestingClass = ""
}
if (jQuery.iDrop.overzone.isNestedSortable) {
jQuery.iDrop.overzone.nestedSortCfg.remeasured = false
}
},
serialize: function (s) {
if (jQuery('#' + s).get(0).isNestedSortable) {
return jQuery.iNestedSortable.newSerialize(s)
} else {
return jQuery.iNestedSortable.oldSerialize(s)
}
},
oldSerialize: jQuery.iSort.serialize,
newSerialize: function (s) {
var i;
var h = '';
var j = '';
var o = {};
var e;
var k = function (f) {
var g = [];
thisChildren = jQuery(f).children('.' + jQuery.iSort.collected[s]);
thisChildren.each(function (i) {
var a = jQuery.attr(this, 'id');
if (a && a.match) {
a = a.match(e.nestedSortCfg.serializeRegExp)[0]
}
if (h.length > 0) {
h += '&'
}
h += s + j + '[' + i + '][id]=' + a;
g[i] = {
id: a
};
var b = jQuery(this).children(e.nestedSortCfg.nestingTag + "." + e.nestedSortCfg.nestingTagClass.split(" ").join(".")).get(0);
var c = j;
j += '[' + i + '][children]';
var d = k(b);
if (d.length > 0) {
g[i].children = d
}
j = c
});
return g
};
if (s) {
if (jQuery.iSort.collected[s]) {
e = jQuery('#' + s).get(0);
o[s] = k(e)
} else {
for (a in s) {
if (jQuery.iSort.collected[s[a]]) {
e = jQuery('#' + s[a]).get(0);
o[s[a]] = k(e)
}
}
}
} else {
for (i in jQuery.iSort.collected) {
e = jQuery('#' + i).get(0);
o[i] = k(e)
}
}
return {
hash: h,
o: o
}
},
findPrecedingItem: function (e) {
var d = 0;
var f = jQuery.grep(e.dropCfg.el, function (i) {
var a = (i.pos.y < jQuery.iDrag.dragged.dragCfg.ny) && (i.pos.y > d);
if (!a) {
return false
}
var b;
if (e.nestedSortCfg.rightToLeft) {
b = (i.pos.x + i.pos.wb + e.nestedSortCfg.snapTolerance > jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.wb)
} else {
b = (i.pos.x - e.nestedSortCfg.snapTolerance < jQuery.iDrag.dragged.dragCfg.nx)
}
if (!b) {
return false
}
var c = jQuery.iNestedSortable.isBeingDragged(e, i);
if (c) {
return false
}
d = i.pos.y;
return true
});
if (f.length > 0) {
return f[(f.length - 1)]
} else {
return null
}
},
isTouchingFirstItem: function (e) {
var c;
var d = jQuery.grep(e.dropCfg.el, function (i) {
var a = (c === undefined || i.pos.y < c);
if (!a) {
return false
}
var b = jQuery.iNestedSortable.isBeingDragged(e, i);
if (b) {
return false
}
c = i.pos.y;
return true
});
if (d.length > 0) {
d = d[(d.length - 1)];
return d.pos.y < jQuery.iDrag.dragged.dragCfg.ny + jQuery.iDrag.dragged.dragCfg.oC.hb && d.pos.y > jQuery.iDrag.dragged.dragCfg.ny
} else {
return false
}
},
isBeingDragged: function (e, a) {
var b = jQuery.iDrag.dragged;
if (!b) {
return false
}
if (a == b) {
return true
}
if (jQuery(a).parents("." + e.sortCfg.accept.split(" ").join(".")).filter(function () {
return this == b
}).length !== 0) {
return true
} else {
return false
}
},
shouldNestItem: function (e, a) {
if (!a) {
return false
}
if (e.nestedSortCfg.noNestingClass && jQuery(a).filter("." + e.nestedSortCfg.noNestingClass).get(0) === a) {
return false
}
if (e.nestedSortCfg.rightToLeft) {
return a.pos.x + a.pos.wb - (e.nestedSortCfg.nestingPxSpace - e.nestedSortCfg.snapTolerance) > jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.wb
} else {
return a.pos.x + (e.nestedSortCfg.nestingPxSpace - e.nestedSortCfg.snapTolerance) < jQuery.iDrag.dragged.dragCfg.nx
}
},
nestItem: function (e, a) {
var b = jQuery(a).children(e.nestedSortCfg.nestingTag + "." + e.nestedSortCfg.nestingTagClass.split(" ").join("."));
var c = jQuery.iSort.helper;
styleHelper = c.get(0).style;
styleHelper.width = 'auto';
if (!b.size()) {
var d = "<" + e.nestedSortCfg.nestingTag + " class='" + e.nestedSortCfg.nestingTagClass + "'></" + e.nestedSortCfg.nestingTag + ">";
b = jQuery(a).append(d).children(e.nestedSortCfg.nestingTag).css(e.nestedSortCfg.styleToAttach)
}
jQuery.iNestedSortable.updateCurrentNestingClass(e, b);
jQuery.iNestedSortable.beforeHelperRemove(e);
b.prepend(c.get(0));
jQuery.iNestedSortable.afterHelperInsert(e)
},
appendItem: function (e, a) {
jQuery.iNestedSortable.updateCurrentNestingClass(e, jQuery(a).parent());
jQuery.iNestedSortable.beforeHelperRemove(e);
jQuery(a).after(jQuery.iSort.helper.get(0));
jQuery.iNestedSortable.afterHelperInsert(e)
},
insertOnTop: function (e) {
jQuery.iNestedSortable.updateCurrentNestingClass(e, e);
jQuery.iNestedSortable.beforeHelperRemove(e);
jQuery(e).prepend(jQuery.iSort.helper.get(0));
jQuery.iNestedSortable.afterHelperInsert(e)
},
beforeHelperRemove: function (e) {
var a = jQuery.iSort.helper.parent(e.nestedSortCfg.nestingTag + "." + e.nestedSortCfg.nestingTagClass.split(" ").join("."));
var b = a.children("." + e.sortCfg.accept.split(" ").join(".") + ":visible").size();
if (b === 0 && a.get(0) !== e) {
a.hide()
}
},
afterHelperInsert: function (e) {
var a = jQuery.iSort.helper.parent();
if (a.get(0) !== e) {
a.show()
}
e.nestedSortCfg.remeasured = false
},
updateCurrentNestingClass: function (e, a) {
var b = jQuery(a);
if ((e.nestedSortCfg.currentNestingClass) && (!jQuery.iNestedSortable.currentNesting || b.get(0) != jQuery.iNestedSortable.currentNesting.get(0))) {
if (jQuery.iNestedSortable.currentNesting) {
jQuery.iNestedSortable.currentNesting.removeClass(e.nestedSortCfg.currentNestingClass)
}
if (b.get(0) != e) {
jQuery.iNestedSortable.currentNesting = b;
b.addClass(e.nestedSortCfg.currentNestingClass);
jQuery.iNestedSortable.latestNestingClass = e.nestedSortCfg.currentNestingClass
} else {
jQuery.iNestedSortable.currentNesting = null;
jQuery.iNestedSortable.latestNestingClass = ""
}
}
},
destroy: function () {
return this.each(function () {
if (this.isNestedSortable) {
this.nestedSortCfg = null;
this.isNestedSortable = null;
jQuery(this).SortableDestroy()
}
})
},
build: function (a) {
if (a.accept && jQuery.iUtil && jQuery.iDrag && jQuery.iDrop && jQuery.iSort) {
this.each(function () {
this.isNestedSortable = true;
this.nestedSortCfg = {
noNestingClass: a.noNestingClass ? a.noNestingClass : false,
rightToLeft: a.rightToLeft ? true : false,
nestingPxSpace: parseInt(a.nestingPxSpace, 10) || 30,
currentNestingClass: a.currentNestingClass ? a.currentNestingClass : "",
nestingLimit: a.nestingLimit ? a.nestingLimit : false,
autoScroll: a.autoScroll !== undefined ? a.autoScroll == true : true,
scrollSensitivity: a.scrollSensitivity ? a.scrollSensitivity : 20,
scrollSpeed: a.scrollSpeed ? a.scrollSpeed : 20,
serializeRegExp: a.serializeRegExp ? a.serializeRegExp : /[^\-]*$/
};
this.nestedSortCfg.snapTolerance = parseInt(this.nestedSortCfg.nestingPxSpace * 0.4, 10);
this.nestedSortCfg.nestingTag = this.tagName;
this.nestedSortCfg.nestingTagClass = this.className;
this.nestedSortCfg.styleToAttach = (this.nestedSortCfg.rightToLeft) ? {
"padding-left": 0,
"padding-right": this.nestedSortCfg.nestingPxSpace + 'px'
} : {
"padding-left": this.nestedSortCfg.nestingPxSpace + 'px',
"padding-right": 0
};
jQuery(this.nestedSortCfg.nestingTag, this).css(this.nestedSortCfg.styleToAttach)
});
jQuery.iSort.checkhover = jQuery.iNestedSortable.checkHover;
jQuery.iSort.check = jQuery.iNestedSortable.check;
jQuery.iSort.serialize = jQuery.iNestedSortable.serialize
}
return this.Sortable(a)
}
};
jQuery.fn.extend({
NestedSortable: jQuery.iNestedSortable.build,
NestedSortableDestroy: jQuery.iNestedSortable.destroy
});
jQuery.iUtil.getScroll = function (e) {
var t, l, w, h, iw, ih;
if (e && e.nodeName.toLowerCase() != 'body') {
t = e.scrollTop;
l = e.scrollLeft;
w = e.scrollWidth;
h = e.scrollHeight;
iw = 0;
ih = 0
} else {
if (document.documentElement && document.documentElement.scrollTop) {
t = document.documentElement.scrollTop;
l = document.documentElement.scrollLeft;
w = document.documentElement.scrollWidth;
h = document.documentElement.scrollHeight
} else if (document.body) {
t = document.body.scrollTop;
l = document.body.scrollLeft;
w = document.body.scrollWidth;
h = document.body.scrollHeight
}
iw = self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0;
ih = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0
}
return {
t: t,
l: l,
w: w,
h: h,
iw: iw,
ih: ih
}
请帮帮我。我相信其他 Interspire 和 NestedSortable 用户也会发现这很有用。感谢您的关注,我非常感谢任何试图解决此问题的人,无论您是否成功。 };
最佳答案
在花了 3 天半尝试调试但没有成功后,我决定尝试来自 mjsarfatti.com 的 jQuery 插件。而不是来自 code.google.com 的那个.
使用 Misarfatti 的插件无法立即使用,因为他确实有您必须配置的设置才能正常工作,否则它会卡住您的浏览器。我认为在花费数小时从私有(private)管理面板获取所有代码并将其设置为在 jsfiddle 中工作之前,这值得一试。即使我这样做了,这个问题在这里似乎也没有什么兴趣,而且可能永远不会得到解决。
这是我一年多来遇到的最大的编码噩梦,所以我想我会在这里发布解决方案,以防其他人遇到同样的问题。我讨厌有人经历我对它所做的事情。如果需要,我可以发布完整的代码,尽管它非常简单。
关于javascript - jQuery Nested Sortable - 无法移动嵌套的 LI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220798/
只是想知道 Jquery Mobile 是否足够稳定以用于实时生产企业移动应用程序。 有很多 HTML5 框架,因为我们的团队使用 JQuery 已经有一段时间了,我们更愿意使用 Jquery 移动框
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 3 年前。 Improve t
所以我尝试在 JavaScript 中对元素进行拖放。我使用的视频教程在这里; https://www.youtube.com/watch?v=KTlZ4Hs5h80 。我已经按照它的说明进行了编码,
无法在移动 iOS(safari 和 chrome)上自动播放以前缓存的 mp3 音频 我正在 Angular 8 中开发一个应用程序,在该应用程序的一部分中,我试图在对象数组中缓存几个传入的音频 m
Git 基于内容而不是文件,所以我目前理解以下行为,但我想知道是否有特殊选项或 hack 来检测此类事情: git init mkdir -p foo/bar echo "test" foo/a.tx
我正在寻找语义 ui 正确的类来隐藏例如移动 View 中的 DIV。在 Bootstrap 中,我们有“visible-xs”和“hidden-xs”。 但是在语义ui上我只找到了“仅移动网格” 最
我正在使用 ubuntu 和 想要移动或复制大文件。 但是当我与其他人一起使用服务器时,我不想拥有所有内存并使其他进程几乎停止。 那么有没有办法在内存使用受限的情况下移动或复制文件? 最佳答案 如果你
这些指令有什么区别?以 ARM9 处理器为例,它不应该是: ASM: mov r0, 0 C: r0 = 0; ASM: ld r0, 0 C: r0 = 0; ? 我不知道为什么要使用一个或另一个:
我有一个文件夹,其中包含一些随机命名的文件,其中包含我需要的数据。 为了使用数据,我必须将文件移动到另一个文件夹并将文件命名为“file1.xml” 每次移动和重命名文件时,它都会替换目标文件夹中以前
我经常在 IB/Storyboard 中堆叠对象,几乎不可能拖动其他对象后面的对象而不移动前面的对象。无论如何我可以移动已经选择但位于其他对象后面的对象吗?当我尝试移动它时,它总是选择顶部的对象,还是
几个月前,我看到 Safari 7 允许推送通知,它似乎是一个非常有用的工具,除了我看到的每个示例都专注于桌面浏览,而不是移动设备。 Safari 推送通知是否可以在移动设备上运行,如果没有,是否有计
我有一个简单的 View 模型,其中包含修改后的 ObservableCollection使用 SynchronizationContext.Current.Send在 UI 线程上执行对集合的更改。
关于cassandra创建的数据文件和系统文件的位置,我需要移动在“cassandra.yaml”配置文件中设置的“commitlog_directory”、“data_file_directorie
我有这个代码 $(function() { var message = 'Dont forget us'; var original; var txt1 = ' - '; $(wind
我的客户报告说他的网站有一个奇怪的问题。该网站的 URL 是 your-montenegro.me 在 基于 Android 的浏览器 上加载时,页面底部会出现一个奇怪的空白区域。以下是屏幕截图: 华
我有这个 HTML 标记: Express 300 bsf Sign Up 我需要将元素从 DOM 上的一个
我有一个可重新排序的 TableView (UITableView 实例)。尽管我已经实现了 UITableViewDataSource 方法: tableView:moveRowAtIndexPat
我的客户报告说他的网站有一个奇怪的问题。该网站的 URL 是 your-montenegro.me 在 基于 Android 的浏览器 上加载时,页面底部会出现一个奇怪的空白区域。以下是屏幕截图: 华
我需要在拖放或复制/剪切和粘贴(复制与移动)期间获取操作类型。它是一个 Swing 应用程序,并且实现了 TransferHandle。我在操作结束时需要此信息,在 importData 方法中。 对
我编写了一个具有 add 和 get 方法的 SortedIntList 类。 我调用以下四个方法: SortedIntList mySortedIntList = new SortedIntList
我是一名优秀的程序员,十分优秀!