首先,点击一个链接将有一个ajax调用,一旦它返回成功,将调用另一个函数...
//First Call
$(this).click(ajaxHandler);
function ajaxHandler(){
var $obj = $(this);
var urlLink = someURL;
var data = "id=" + "123";
// Unbind the ajax handler to prevent re-fire before ajax request completes
$obj.unbind("click", ajaxHandler);
$.ajax({
url: urlLink,
data: data,
cache: false,
success: function(resp){
// Bind the new event handler
$obj.bind("click", someFunction);
// Fire click on Object
$obj.click();
},
error: function(){
// Put the ajax handler back so the user can try again if it fails
$obj.bind("click", ajaxHandler);
}
});
}
在这里,在“someFunction”中,我打电话给,
someFunction: function(e){
var evt = (e) ? e : window.event;
var p = evt.target.name;
var x = evt.pageX;
var y = evt.pageY;
............
}
我第一次 evt.pageX 和 evt.pageY 未定义。如果我再次点击链接,那么给出确切的位置。
我第一次获得 evt.target.name 的数据。 这些事件对工具提示很有用。
请帮助我第一次识别轴位置。 提前谢谢......
答案 0 :(得分:1)
我通常只是在mousemove上随时跟踪它,它总是适用于我
var xPos;
var yPos;
$(document).ready(function () {
$(document).mousemove(function (e) {
xPos = e.clientX;
yPos = e.clientY;
});
});
或者可能会这样延迟
setTimeout(function () {$obj.click();
}, 500);
答案 1 :(得分:1)
第一次未定义,因为click事件是手动触发的,而不是用户点击鼠标。要解决此问题,您可以手动调用someFunction
而不是触发事件,并且可以通过第一个调用的事件变量。
//First Call
$(this).click(ajaxHandler);
function ajaxHandler(e){
var $obj = $(this);
var urlLink = someURL;
var data = "id=" + "123";
// Unbind the ajax handler to prevent re-fire before ajax request completes
$obj.unbind("click", ajaxHandler);
$.ajax({
url: urlLink,
data: data,
cache: false,
success: function(resp){
// Bind the new event handler
$obj.bind("click", someFunction);
// call function in the context of $obj and pass through event variable
someFunction.apply($obj[0],[e]);
},
error: function(){
// Put the ajax handler back so the user can try again if it fails
$obj.bind("click", ajaxHandler);
}
});
}
在someFunction
中你不需要对事件变量做任何事情,jQuery会为你规范它:
someFunction: function(evt){
var p = evt.target.name;
var x = evt.pageX;
var y = evt.pageY;
............
}
答案 2 :(得分:0)
尝试使用$ obj.live(“click”,function()...)
我发现它比bind
更好