在我的文档的顶部,我有这个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.
}
});
答案 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();
});