我正在使用jQuery 2.1.4。
我正在使用最新的tipsy。
我知道jQuery' .live
已被弃用并使用.on
。
我对这里发现的改变做了改动:
tipsy live does not work with jQuery 1.9.0
用,
if (options.trigger != 'manual') {
var eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
if(options.live){
$(this.context).on(eventIn, this.selector, enter).on(eventOut, this.selector, leave);
} else {
this.on(eventIn, enter).on(eventOut, leave);
}
}
这是我页面中的Javascript,
$('svg text').tipsy({
gravity: 's',
html: true,
live: true,
title: function() {
$.ajax({
dataType: 'json',
url: "http://myserver/apihistory/emp.php?empid=123456",
success: function(result){
alert(result.lastname);
return result.lastname;
},
error: function(result){
return 'no good';
}
});
}
});
我得到"未定义"当我将鼠标悬停在元素上时,从醉意。我使用alert
获得了正确的值。为什么不能看到价值?我的php文件正在为json发送标题,
header('Content-Type: application/json');
echo json_encode($results);
我将json作为我的dataType,所以我得到一个对象,而不是文本。当我返回result.lastname。
时,我正在发送我的姓氏文本(或者我认为)我知道醉意的作品,因为如果我把Ajax拿出来并且只是使用" hi。"我的工具提示有效,而且我把它用在其他地方,而不是用json。
我已经在浏览器的开发工具(Chrome)中检查了标题和Javascript对象,并且我已手动浏览到该页面。我能看到,正确的数据和格式是正确的(或者我无法提醒result.lastname)。
编辑:
我阅读了链接的SO问题,我相信我现在明白了,异步部分是我的问题,"所以我在.ajax电话中使用了这些知识:
title: function(){
....
success: function(result){
getLinkage(result.lastname);
},
}
//...outside of tipsy
function getLinkage(response){
return response;
}
但我仍然未定义。我认为我没有正确地进行回调。我做错了什么?
编辑:
我改变了这一点。这不是回调吗?我意识到发生了什么,但我不理解解决方案。我以为我在这里有回电。
内心醉意:
title: function(){
return getLinkage(); //isn't this the callback?
}
//...outside of tipsy
function getLinkage(){
$.ajax({
dataType: 'json',
url: "http://myserver/apihistory/emp.php?empid=123456",
success: function(result){
alert(result.lastname);
return result.lastname;
},
error: function(result){
return 'no good';
}
});
}