2010-09-22 58 views
1

我正在为客户端开发基于JavaScript的旗帜,并且遇到了困难。横幅广告在Chrome,Firefox,IE7和8上运行良好。然而,Safari允许用户关闭横幅并打开一次,然后停止响应点击。用户应该能够根据需要多次打开和关闭横幅。jQuery的委托()在Safari中无法正常运行,在所有其他浏览器中都正常工作

不是塞满了这则讯息代码片段中,该横幅的例子可以在这里找到:http://jsfiddle.net/M3EPK/2/embedded

我注释掉,试图在一个点上,以前的代码。

任何人都可以给我任何解释,为什么它可以在所有这些浏览器中工作,但在Safari中如此悲惨地失败。所有的浏览器都是最新版本(除了IE可以说话外)。

+0

只是想知道,为什么你有$($横幅)?不应该是$('#banner')?我看到你把var $ banner =。我认为这应该只是var banner =,然后你可以做$(banner)。我不认为你可以在JavaScript中放置一个美元符号。 – Metropolis 2010-09-22 18:25:10

+0

您还可以简化jQuery(document).ready(function($)to $(function(){}); – Metropolis 2010-09-22 18:26:31

+0

我使用$ banner,因为如果我要使用$('#banner'),那将需要jQuery在每次遇到它时都会查找它的位置,美元符号预先加上变量名称用于我自己的目的,它让我知道该变量与一个jQuery对象相关联。至于简化,我把它作为jQuery文档)...因为我使用jQuery.noConflict()来释放可能在页面上的任何其他库的美元符别名 – 2010-09-22 18:35:25

回答

0

您是否尝试过使用.live()而不是?

+0

我曾尝试使用.live(),但无效。.delegate()函数以非常相似的方式,并且实际上比.live() http://www.learningjquery.com/2010/03/using-delegate-and-undelegate-in-jquery-1-4-2 – 2010-09-22 20:05:46

+0

是的,确实....只是检查是否是问题.. ..嗯.....你的代码对我来说看起来不错,但我保证你的代码在你的代码中造成它。我前几天遇到了同样的问题。尝试添加警报并继续在Safari浏览器中进行测试,直到找到停止位置。 – Metropolis 2010-09-22 20:11:48

相关问题