2012-06-13 92 views
1

我有一個代碼,使用jQuery,檢查是否點擊了正確的圖像,然後根據回答是否正確將圖像更改爲紅色或綠色。之後,它等待2秒鐘並重新加載頁面以顯示下一個圖片對。它可以獨立使用它,但是一旦我將它放入Facebook應用程序中,它就無法正常工作。jQuery不適用於Chrome瀏覽器的facebook應用程序

在IE和Firefox中,它會改變點擊顏色,但不會重新加載頁面。然而,在Chrome中,它甚至不會改變點擊的顏色。這可能是iframe或其他問題嗎?當我在iframe中使用jQuery時,是否需要特定的參數?

摘錄從我的代碼看起來是這樣的:

jQuery(document).ready(function(){ 
    jQuery('img#0').live("click", function(){ 
     if (jQuery(this).hasClass("correct")){ 
      jQuery(this).attr('src', "0g.png"); 
     } else{ 
      jQuery(this).attr('src', "0r.png"); 
     } 

    }); 
}); 

正如你所看到的,我甚至jQuery的改變$,以防止與其他可能的庫衝突。

任何想法,我可以得到這個工作?

+0

你的瀏覽器的錯誤控制檯說什麼? – CBroe

+0

控制檯不顯示任何錯誤 –

+0

實際上,Chrome控制檯顯示:Uncaught ReferenceError:未定義jQuery。 我需要找出如何定義它,因爲我已經成功地包含了'在我的代碼中。 –

回答

0

id爲0的圖片是HTML4和XHTML中的無效HTML元素ID。它在HTML5中有效。這可能是您的DOCTYPE聲明的問題。

如果更改DOCTYPE不能解決問題,則可以委派到圖像單擊事件。

// html 
<div id="someElement"> 
    <img class="correct" /> 
</div> 

// jquery 
$("div#someElement").delegate("img", "click", function() { 
    var correct = $(this).hasClass("correct"); 
    $(this).attr('src', (correct ? "0g.png" : "0r.png")); 
}); 

jQuery.delegate()類似於.live()功能,它將應用到當前的未來元素。區別在於delegate()將事件處理程序應用於父元素(someElement)並監視來自子節點的冒泡事件。 live()監視文檔頂部的這些冒泡事件,可能會使性能變差。有關文檔頁面的更多信息以及關於SO之間的差異的大量討論。

這裏有相關鏈接的ID屬性規格:

html5 spec
html4 spec
xhtml guidelines
What are valid values for the id attribute in HTML?

+0

我這樣做,但它沒有幫助。我將id更改爲「i0」,所以它不會與DOCTYPE聲明發生衝突。我也將這些修改應用到了代碼中,但它仍然不起作用。我之所以使用'.live()'是因爲後來我使用'.die()'殺死事件處理程序,所以用戶將無法點擊其他圖片。 –

0

好了,這可能是有史以來最愚蠢的想法 - 但它只是爲我工作。 JQuery在查看網頁時在Chrome瀏覽器的網頁上正常加載 - 而不是在Facebook中。當我在fb應用程序中將它加載到chrome中時,它失敗了。

IE工作正常。我發現我鏈接到http://而不是https://(記住一切都必須安全)。當我將其更改爲https://時,它工作正常。

3

當你在Facebook頁面或應用程序中運行jquery時,你必須使用https,包括你的html裏面的鏈接到你的腳本文件。

+0

同樣的問題是與IE ..不知道如何Mozilla的工作沒有這些修復.. Nyways你的答案是有幫助的..謝謝 – mjs

相關問題