为了尽快解释这一点,我有一个mouseenter Jquery事件触发了一个AJAX调用。还有一个 Jquery UI 工具提示。
$(function()
{
$(document).tooltip({track:true});
$('#NewUser').mouseenter(function(){AJAXValidation("NewUser")});
});
这是电话:
function AJAXValidation(section)
{
var request = $.ajax(
{
url: "ProcessJRT.php",
type: "POST",
contentType:"application/x-www-form-urlencoded;charset=UTF-8",
data:
{
validate:section
}
});
request.done(
function(message)
{
var div = document.createElement('div');
$(div).html(message);
$(div).children().each
(
function(i)
{
var title = '';
if($('#' + $(this).attr('id')).attr('title') != null)
{
title = $('#' + $(this).id).attr('title');
}
title += $(this).html() + 'rn';
$('#' + $(this).id).attr('title', title);
}
);
});
}
它现在所做的是从message
中获取<div>
并将它们放置在父<div>
中。(在我的代码中,div 已经存在,我更改了该部分,以便问题尽可能简短)。
然后,我从这些<div>
中获取文本,并将它们放在相应的 <input/>
title 属性中。
一切都在这里完美无缺,除了这个愚蠢的小东西:
我无法在标题中添加 LN 或 CR,因此div 中的所有文本都将在单独的行上......
我尝试在属性中添加一个</br>
,如下所示:
function(i)
{
var title = '';
if($('#' + $(this).id).attr('title') != null)
{
title = $('#' + $(this).attr('id')).attr('title');
}
title += $(this).html() + '</br>';//<---See I added a BR here
$('#' + $(this).id).attr('title', title);
}
但它将</br>
显示为普通文本。我尝试了String.fromCharCode(13)
但没有奏效,我尝试了 jus 'n'
或 'rn'
并且仍然有效。
有人可以指出我是否在嘲笑这个吗?
谢谢!
编辑:
将$('#' + $(this).attr('id'))
更改为 $('#' + $(this).id)
。
您不能以这种方式设置 title 属性的格式,它不起作用,并且在不同的浏览器中会有所不同。
尝试使用jquery插件qTip来实现你想要的。(看起来也不错!http://craigsworks.com/projects/qtip/
或者,您可以使用
等作弊,将文本推送到下一行。 但这充其量是片状的。
以下是我如何用@crush给我的想法来解决我的问题:
第一:
我从触发事件的函数中删除了工具提示初始化:
$(function()
{
$('#NewUser').mouseenter(function(){AJAXValidation("NewUser")});
});
下一个:
我更改了"done"函数,因此每次使用 html 内容初始化一个新的工具提示(仅供参考,JQuery 工具提示可以格式化 HTML)
这是它现在的样子:
function(message)
{
var div = document.createElement('div');
$(div).html(message);
var title = '';
$(div).children().each
(
function(i)
{
if($('#' + $(this).id).attr('title') != null)
{
title = $('#' + $(this).id).attr('title');
}
title += $(this).html() + '</br>';
$(document).tooltip({content:title, items:('#' + $(this).id)});
}
);
}