将工具提示文本动态设置为div元素

时间:2013-10-24 16:43:06

标签: jquery jquery-ui jquery-tooltip jquery-ui-tooltip

我正在尝试动态地将工具提示文本设置为容器(div),并使用jQuery为每个div元素(elem.Alias-Status)添加到有序列表中:

 function addNewElement(elem) {

     var li = $("<li></li>");

     li.prop("class", "ui-state-default");
     li.prop("id", elem.Alias);
     li.text(elem.Name);

     var newItem = '<div id="' + elem.Alias + '-Status" class="elementStatus" tooltipText="' + elem.IP + '"><div class="image"><img id="' + elem.Alias + '-StatusImg" src="@Url.Content("~/images/ongoing.gif")"></div><div id="' + elem.Alias + '-StatusTxt" class="text">Waiting...</div></div>';
     //$('#' + elem.Alias + '-Status').prop('tooltipText', elem. IP);

     li.append(newItem);

     li.appendTo($("#OuterDivContainer"));       
 };

但它显然不起作用。在运行时,当我将鼠标悬停在每个鼠标上时,不会显示任何工具提示。而且......我不知道该怎么做。我需要在创建项目的同时在此函数中创建它。

从另一个迭代所有项(元素)的函数调用上面的函数。然后这个函数作为参数elem传递给addNewElement函数。

有什么想法吗?

我正在使用jquery-ui 1.10.3和jquery 1.10.2

3 个答案:

答案 0 :(得分:13)

适合我:

$(yourElement).prop('title', 'yourText');

答案 1 :(得分:1)

根据API(http://api.jqueryui.com/tooltip/#option-content),在您的情况下执行此操作的方法是在附加容器后初始化工具提示。

$('#' + elem.Alias + '-Status').tooltip({ content: elem.IP });

当然,您也可以在初始化后更改工具提示内容,如下所示:

$('#' + elem.Alias + '-Status').tooltip("option", "content", "New Content");

我最近遇到了这种困难并找到了许多其他方法,包括您尝试过的方法,在您的情况下,由于工具提示尚未初始化,因此无效。但这是正确的方法,对我有用。

答案 2 :(得分:-1)

这是code to set a tooltip for any element using jQuery

<html>
<head>
<title>test</title>
<script type="text/javascript" src="jquery.min.js"></script>
</head>
<body>
<button class="hide tip" data="hello">tip button</button>
<script language="javascript" type="text/javascript">
var xoff = 0; 
var yoff = 30; 
$(".tip").unbind().hover(function(e){
  this.top = (e.pageY + yoff);
  this.left = (e.pageX + xoff);
  var data = $(this).attr("data");
  if(typeof(data)!='undefined'){
    var tipcontainer = '<div class="hide" id="tipcontainer">'+data+'<div>';
    $('body').append(tipcontainer);
    $("#tipcontainer").css({"position":"absolute","top":this.top + "px","left":this.left + "px"}).fadeIn("fast");
  }
},function(){
   $("#tipcontainer").fadeOut("slow").remove();
}).mousemove(
  function (e) {
    this.top = (e.pageY + yoff);
    this.left = (e.pageX + xoff);
    $("#tipcontainer").css({"position":"absolute","top":this.top + "px","left":this.left + "px"});
  }
);        
</script>
</body>
</html>