我正在使用带有 jquery 拖放的 knockoutjs,它在 Chrome、Firefox、IE9 中运行良好,但在 IE8 中运行良好。我无法发布实际代码,但我创建了一个可以重现错误的 jsfiddle 示例。请查看http://jsfiddle.net/wired1/P9hns/20/ 它在最新的 Firefox、Chrome 和 IE9 中运行良好。但是在 IE8 中尝试拖动时出现以下错误:
IE8 错误 #1
SCRIPT5007:无法获取属性“选项”的值:对象为空或未定义 jquery-ui.1.8.18.js,第 1412 行字符 13
这是jquery ui中引用的代码:
$.ui.plugin.add("draggable", "cursor", {
start: function(event, ui) {
var t = $('body'), o = $(this).data('draggable').options;
if (t.css("cursor")) o._cursor = t.css("cursor");
t.css("cursor", o.cursor);
},
stop: function(event, ui) {
var o = $(this).data('draggable').options;
if (o._cursor) $('body').css("cursor", o._cursor);
}
});
就是stop函数中变量o的声明:var o = $(this).data('draggable').options;
如果我在 jquery ui 中注释掉这两行,我会收到以下错误:
IE8 错误 #2
SCRIPT5007:无法获取属性“选项”的值:对象为 null 或未定义 jquery-ui.1.8.18.js,第 1439 行字符 38
这指向:
$.ui.plugin.add("draggable", "scroll", {
start: function(event, ui) {
var i = $(this).data("draggable");
if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
},
drag: function(event, ui) {
var i = $(this).data("draggable"), o = i.options, scrolled = false;
........................
这是上面代码片段的最后一行,其中o = i.options。
如果我将 {scroll: false} 设置为 jqueryui 可拖动的选项,错误就会消失,但它仍然不起作用。
似乎当我开始按顺序拖动所有事件时,即使未释放鼠标单击(在 jsfiddle 中运行代码测试时,请查看控制台以查看日志)。
是 jquery ui 问题还是我做错了什么?对此的任何帮助将不胜感激。