我有一个奇怪的问题,只是偶尔发生。在我的 js 文件中有一个实用功能部分。我最终为 jQuery 实用函数添加了一个部分(如下所示)。代码在文件中间,但不在任何闭包内。文件的 script 标签位于 jQuery 的 sript 标签之后。
有时,到目前为止,我还不知道如何重现这一点,代码将运行一个无限循环,在下面显示的代码的第 37 行给出它无法找到变量 jQuery 的错误。jQuery 绝对被定义为应用程序几乎完全是 jQuery。而且,大多数时候没有问题。
这到底是什么原因造成的?
(function ($) {
$.fn._draggable = function (draggable) { // for when html5 draggable and jquery ui draggable are not available.
// if there is only one element to be made _draggable an id for that element is not required.
// if more than one element is to be made draggable a unique id for each element should be used to avoid event handling collissions.
var $elm = this;
var id = $elm.attr("id") ? $elm.attr("id") : "tmp";
if (draggable == false) {
$elm.off("mousedown." + id);
$(document).off("mouseup._draggable." + id);
$(document).off("mousemove._draggable." + id);
return;
}
else if(draggable == true) {
$elm.css("position", "absolute");
$elm.on("mousedown." + id, function() {
var position = $elm.position();
var oL = event.pageX - position.left;
var oT = event.pageY - position.top;
$(document).on("mousemove._draggable." + id, function (event) {
$elm.css({
top: event.pageY - oT,
left: event.pageX - oL
});
});
$(document).on("mouseup._draggable." + id, function() {
$(document).off("mouseup._draggable." + id);
$(document).off("mousemove._draggable." + id);
});
});
}
};
$.fn.tagName = function () {
return this.prop("tagName").toLowerCase();
};
})(jQuery);