2010-09-01 83 views
1

我不知道是否有人可以幫助我。我知道JS得很好,但我完全新的JQuery的...JQuery X/Y合作伙伴的圖像onclick()

我有正在被動態加載可見調用UpdateImage()

$.fn.image = function (src, f) { 
     return this.each(function() { 
      var i = new Image(); 
      i.src = src; 
      i.onload = f; 
      this.appendChild(i); 
     }); 
    } 

    function UpdateImage() { 
     $("#Screen").image("./AJAX/UI/GetImage.aspx", function() { 
      //alert('ok'); 
     }); 
    } 

圖像加載後的圖像,我希望用戶能夠點擊它的任何位置並在AJAX調用中使用點擊的X/Y座標。

我知道如何在純JS做到這一點,但我的感覺,必須有一個更優雅的JQuery方法...

目前,我想這樣的:

$(document).ready(function() { 
     $("#Screen").click(function() { 
      alert(this.x + ', ' + this.y); 
     }); 
     UpdateImage(); 
    }); 

不幸的是,無論點擊位置如何,檢索到的X和Y都是恆定的。 (x:9,y:1019)。

問題:由於圖像幾乎是左上角的頁面上,我在Y值驚訝 - 這是什麼代表什麼呢?我認爲,如果它不是鼠標合作伙伴,它將是元素位置 - 但這看起來不正確 - 在這裏Y是積極的「向上」的方向,而不是下降(如我所料)?

我GOOGLE了,發現很多我認爲是矯枉過正的解決方案 - 它們適用於任何元素類型和依靠計算那麼,元件位置的鼠標光標位置,做一些數學 - 這看起來很不雅觀,而且容易出錯因爲它依賴於瀏覽器。

問題:我採取的方法是否正確?我應該使用JQuery UI小部件來顯示圖像嗎?爲了爭辯,假設圖像是一個ScreenShot,並且可能比瀏覽器窗口更大 - 我目前依靠瀏覽器進行滾動等,但是又懷疑可能有更好的方法?

總之,從一些JQuery的專家的任何建議,將不勝感激 - 特別是如果你能在一個良好的JQuery資源指向我(我發現手動但這是比較有用的方法簽名比對找出哪些方法使用JQuery時)

在情況下,它會影響你的反應是正確的,我使用的存儲圖像元素如下所示

<div id="Image"><img id="Screen"/></div> 

非常感謝提前任何幫助,您可以提供。

回答

2

你嘗試使用連接到單擊事件COORDS而不是元素:

$(document).ready(function() { 
     $("#Screen").click(function (e) { 
      alert(e.pageX + ', ' + e.pageY); 
     }); 
     UpdateImage(); 
    }); 
+1

噢,打是吧:P – 2010-09-01 01:01:30

+0

該死。我試圖訪問e並沒有任何東西 - 我錯過了方法聲明中的e參數。謝謝你發現一個男生錯誤:) – Basic 2010-09-01 01:21:37

+0

有時它只需要第二雙眼睛:-) – prodigitalson 2010-09-01 01:30:53