2012-04-13 60 views
0

我做了一個jQuery/JavaScript的點擊圖片時,將頁面加載到div。它適用於IE,Firefox,Chrome,但NOT歌劇..我不明白爲什麼它不工作..jquery click()+ load()不適用於Opera?

請看看這個網頁,並點擊產品,看看它是如何加載一個彈出窗口。 http://www.dev.dressmind.com

下面是點擊腳本:

function qp(id) { 
    $.ajax({ 
     method: "get", 
     url: "QuickProduct.aspx", 
     data: "id=" + id, 
     //beforeSend: function() { $('#main').hide('slow').fadeOut(); }, 
     complete: function() { 
      $('#product-area').show('200').fadeIn(); 
      $("#product-area-overlay").show(); 
      $(".productbox-hover").hide(); 
     }, 
     success: function(result) { 
      $('#product-area').html(result); 
     } 
    }); 
} 

然後,我有一個鏈接,看起來像這樣:

<a href="#" id="123123" onClick="qp(123123);return false;"><div></div</a> 

所以請,有人可以快速瀏覽一下,幫我解決這個問題。

解決它

我解決它通過的onclick事件移動到div內的,而不是有它的鏈接。

< a href="#" id="123123"> 
    < div **onClick="qp(123123);return false;"**> < /div> 
< /a> 
+1

你不能用一個數字開始一個ID屬性值,它是無效的 – 2012-04-13 10:32:35

+0

我通過將onclick事件移動到中的div而不是鏈接上來解決它。 – 2012-04-13 12:34:22

回答

1

旁邊的事實,ID的可能不能以數字作爲@Kanishka提到的開始,你沒有發佈你使用過的代碼。

你打電話給你的功能是這樣的:onclick="qp(id)"。與其他瀏覽器不同,Opera(正確)認爲id是一個未定義的變量。其他瀏覽器可能猜測你實際上是指當前元素的id屬性。您需要改用onclick="qp(this.id)"

要擺脫無效的ID並重復onclick處理程序,您應該考慮一次性分配事件處理程序。類似這樣的:

<a href="#" data-product-id="123456">...</a> 
<a href="#" data-product-id="222222">...</a> 
<!-- etc. --> 

<script> 
    jQuery("[data-product-id]").click(function() { 
    qp(jQuery(this).data('product-id')); return false; 
    }); 
</script> 

BTW:非Javascript用戶呢?

還有一件事:您似乎使用HTML5功能,但導致許多驗證錯誤的XHTML Doctype。

+0

感謝RoToRa的所有提示!我通過將onclick事件移動到中的div而不是鏈接上來解決它。 – 2012-04-13 12:33:46

0

試圖通過jQuery的本身,而不是使用過時的onclick屬性分配您的事件處理程序:

<a href="#" id="123123" class="example">[image]</a> 
$(".example").click(function(e) { 
    qp(this.id); 
} 

function qp(id) { 
    // ... your function... 
} 
相關問題