2012-12-03 138 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特异性)