我试图计算距离屏幕宽度的距离但是在我计算x的行中它返回null。可能是什么问题?
$.fn.saveClicks = function() {
$(this).bind('mousedown.clickmap', function(evt) {
$.post('/clickmap/clickmap.php', {
sw:window.innerWidth,
w:evt.pageX,
x:((sw/2)-w),
y:evt.pageY,
l:escape(document.location.pathname)
});
});
};

答案 0 :(得分:1)
sw
和w
不是变量,它们是您在$.post
函数调用中声明为参数的对象的属性。
// Declare variables first
var sw = window.innerWidth,
w = evt.pageX;
$.post('/clickmap/clickmap.php', {
// Now you can use them in here
sw: sw,
w: w,
x: ((sw/2)-w),
y: evt.pageY,
l: escape(document.location.pathname)
});
看到它正常工作here。
对象没有范围,其属性与局部变量不同。例如,您可以访问对象声明中的变量:
var myVariable = 5;
var myObject = { foo: myVariable };
但是在构造过程中你无法访问对象的其他属性:
var myObject = { myVariable: 5, foo: myVariable };
// THIS DOES NOT WORK!
答案 1 :(得分:0)
您未正确调用$.post()
功能。第二个参数必须是一个对象,它可以包含多个{property: value}
对。
此处$.post()
功能的完整说明:
http://api.jquery.com/jquery.post/
因此,您必须首先定义变量,然后调用$ .post函数,并将这些变量作为对象属性的值传递。
查看此代码:
$.fn.saveClicks = function() {
$(this).bind('mousedown.clickmap', function(evt) {
var sw = window.innerWidth;
var w = evt.pageX;
var y = evt.pageY;
var l = escape(document.location.pathname);
$.post('/clickmap/clickmap.php', {
sw: sw,
w: w,
x:((sw/2)-w),
y: y,
l: l
});
});
};