【发布时间】:2012-03-28 04:07:14
【问题描述】:
在使用 jQUery 1.7.1 和 jQUery-UI 1.8.18 的网页中,如果我在文档准备好时在警告框中输出 $.ui,我会得到 [object Object]。但是,当使用 Firefox 时,如果我在单击事件处理程序中输出 $.ui,我会得到“未定义”。使用其他浏览器(最新版本的IE、Chrome和Safari),点击链接时结果仍然是[object Object]。
这是我的 HTML 页面:
<!doctype html>
<html>
<head>
<title></title>
<script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.8.18.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
alert($.ui); // ALERT A
$(document).on("click", ".dialogLink", function () {
alert($.ui); // ALERT B
return false;
});
});
</script>
</head>
<body>
<a href="#" class="dialogLink">Click me!</a>
</body>
</html>
在这篇文章中,我将另一个问题简化为最简单的形式:$(this).dialog is not a function。为了清楚起见,我创建了一个新帖子,因为真正的问题与原来的问题不同,现在精确指出问题所在。
更新:
如果我用简单的 alert($); 替换我的警报,我会得到警报 A 的结果:
function (selector, context) {
return new jQuery.fn.init(selector, context, rootjQuery);
}
还有这个用于警报 B:
function (a, b) {
return new d.fn.init(a, b, g);
}
这对我来说没有意义,尽管我可能不太了解 $ 是什么...
更新 2:
我只能在 OS X 上使用 Firefox 重现这个问题。在 Windows 7 上运行的 Firefox 上,一切都很好。
【问题讨论】:
-
为我工作:jsbin.com/iyikuk(来源:jsbin.com/iyikuk/edit#html)。该页面必须有更多内容。我把上面的,粘贴到 JSBin 中,我改变的只是脚本的来源。
-
@T.J.Crowder 我在您发布的链接上遇到了同样的问题。你使用的是什么浏览器?正如我所提到的,我只有 FF 才有这个问题。我在装有 OS X 10.7.3 的 Mac 上使用 Firefox 11.0。
-
也适合我。与 TJ 做了同样的事情,除了为喜欢小提琴的人提供了一个小提琴:jsfiddle.net/VxDaA 此外,根据这个样本,没有理由认为它不起作用。丢失事件处理程序的最常见方法是修改 DOM,以使原始节点被销毁、克隆而没有事件等。或者添加一个新的
.dialogLink(从那以后它不会绑定事件)在 document.ready 中触发) -
我刚刚尝试在 Windows 7 机器上使用 Firefox v10.0.2 和 Firefox v11.0,它运行良好。所以这似乎只是 OS X 上的 Firefox 的问题。
-
@GregPettit 在您的帖子和来自 T.J. 的帖子之后Crowder,我决定再做一些测试,发现问题只发生在 OSX 上。我的猜测是你在 Windows 机器上试过这个。 linux机器我没试过……
标签: jquery macos jquery-ui firefox osx-lion