为了解释这一点,我有一个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() + '\r\n';
$('#' + $(this).id).attr('title', title);
}
);
});
}
它现在所做的是从<div>
获取message
并将它们放在父<div>
中。 (在我的代码中div已经存在,我改变了那个部分,所以问题会尽可能短)。
然后我从那些<div>
中获取文字,我想将它们放在相应的<input/>
标题属性中。
这里所有工作都很完美,这可以解决这个愚蠢的小事:
我无法在标题中添加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)
,但没有工作,我尝试了'\n'
或'\r\n'
,但仍然有效。
有人可以指出我正在努力探讨这个吗?
谢谢!
编辑:
将$('#' + $(this).attr('id'))
更改为$('#' + $(this).id)
。
答案 0 :(得分:1)
您不能以这种方式格式化title属性,它不起作用,并且在不同的浏览器中会有所不同。
尝试jquery插件qTip来实现你想要的。 (看起来也不错!) http://craigsworks.com/projects/qtip/
或者,您可以使用
等作弊,将文本推送到下一行。但这充其量只是片状。
答案 1 :(得分:1)
以下是我用@crush给我的想法解决问题的方法:
首先:
我从触发事件的函数中删除了工具提示初始化:
$(function()
{
$('#NewUser').mouseenter(function(){AJAXValidation("NewUser")});
});
下一步:
我改变了&#34;完成&#34;函数所以我每次用html内容初始化一个新的工具提示(FYI 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)});
}
);
}