简单的jQuery计算不返回值

时间:2015-09-13 14:53:54

标签: jquery

我试图计算距离屏幕宽度的距离但是在我计算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) 
        }); 
    }); 
}; 




2 个答案:

答案 0 :(得分:1)

sww不是变量,它们是您在$.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 
        }); 
    }); 
}; 

在这里小提琴:https://jsfiddle.net/rqqe0fL4/3/