2012-12-03 101 views
0

我是新來的jQuery和JavaScript,我想在一個jquery click()函數返回兩個變量?

.click(function(e){ 
    /* some code and creating two vars with the position of the clicked place*/}) 

,我想退掉這兩瓦爾,但我不知道怎麼辦。

+3

'返回{X:e.pageX,Y:e.pageY};' – Shmiddty

+0

創建在單擊功能閉合範圍變量中,並將在該關閉內的任何地方提供。 –

+0

從mouseEvent的屬性中挑選:https://developer.mozilla.org/en-US/docs/DOM/MouseEvent – rjz

回答

3

jQuery .click函數返回一個jQuery對象。所以你不能從函數內部返回。所以,你只需要創建點擊功能之外的變種,並將其設置像下面的函數內部,

var elPos = {}; 
$(element).click (function() { 
    /* some code and creating two vars with the position of the clicked place*/ 
    elPos.x = xpos; 
    elPos.y = ypos 
}); 
+0

@BoazKatzir - 使用Vega的答案。但爲了獲得座標,將'e'傳遞給像你的例子那樣的函數,並用'e.pageX;'和'ypos'替換'xpos;''e.pageY;' – Aust

+0

謝謝你,它的工作原理! –

0
.click(function(e) { 
    var x = e.pageX; 
    var y = e.pageY; 
    return [x, y]; 

});  

如果有喜歡的IMG,那麼你可以試試這個元素...

var x = e.pageX - $(this).offset().left; 
var y = e.pageY - $(this).offset().top; 
2

函數返回一個值。這就是它的工作原理。但你有選擇。

可以返回的數組:

function foobar() { 
    var x = "foo"; 
    var y = "bar"; 
    return [x, y]; 
} 

還可以返回一個對象:

function foobar() { 
    var x = "foo"; 
    var y = "bar"; 
    return {x: x, y: y}; 
} 

也可以解決對於具有在全球範圍內的一對變量:

var x, y; 
function foobar() { 
    x = "foo"; 
    y = "bar"; 
} 

或傳遞對象/數組:

function foobar (obj) { 
    obj.x = "foo"; 
    obj.y = "bar"; 
} 

順便說一句,這一切都不是的jQuery特異性)