2010-09-22 85 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

相關問題