Jquery变量未设置

时间:2012-02-26 12:59:19

标签: javascript jquery

在我的文档的顶部,我有这个Jquery代码:

// RATING 
$('.rateit').click(function(){
var position = $(this).position();
});

在页脚中,我有一个ajax调用:

  jQuery.ajax({
             url: frm.attr('action'), //your server side script
             data: frm.serialize(), //our data
             type: 'POST',
             success: function (data) {
            alert(position.left);
            },

问题是警告框没有显示位置。我已经使用alert('something');进行了测试,它运行正常。

我的真正的ajax电话:

 jQuery.ajax({
     url: frm.attr('action'), //your server side script
     data: frm.serialize(), //our data
     type: 'POST',
     success: function (data) {
    $('.warning').fadeIn(500).css({display: 'block',
        position: 'absolute',
        left: position.left + 50,
        top: position.top - 25
    }).append('asdasdsadsad'),
    $(ri).next('.ratingcount').html('asdasdasd')
    },
     error: function (jxhr, msg, err) {
         alert(msg); //something went wrong.
     }
 });

3 个答案:

答案 0 :(得分:3)

在单击函数上,position是一个局部变量,因此只能在此范围内显示。

试试这个:

var position;

$('.rateit').click(function(){
    position = $(this).position();
});

答案 1 :(得分:1)

在用作click事件处理程序的匿名函数中声明position。这意味着当您尝试提醒它时它将不在范围内(您将获得ReferenceError)。

您需要在事件处理函数之外声明position

var position;
$('.rateit').click(function(){
    position = $(this).position();
});

但是,如果在alert运行时尚未执行点击事件处理程序,您仍会收到错误,因为position将为undefined,因此不会left财产。

答案 2 :(得分:0)

我是因为您的变量是在$('。rateit')中定义的.Click();试试看:

var position;

$('.rateit').click(function(){
position = $(this).position();
});