在页面组件的鼠标悬停时将Wicket面板内容显示为工具提示

时间:2012-09-03 14:03:42

标签: jquery wicket

我有一个wicket MultiLineLabel,它的内容来自数据库。现在,我需要在页面上悬停显示此MultiLineLabel文本作为工具提示。

你能告诉我应该如何解决这个问题(我是wicket的新手)。我应该使用jquery解决方案,还是应该在我的页面上添加onmouseoveronmouseout AjaxEventBehaviors

当我尝试jquery solution时,我不知道如何在工具提示中维护换行符。

请告诉我你的任何例子。

1 个答案:

答案 0 :(得分:3)

我用标准标签对其进行了测试,结果如下:

Label ml;
String msg = "Hello! \n I'm here.";
add(ml = new Label("multiline",msg));
ml.add(AttributeModifier.append("title", msg));

<强>已更新

不幸的是,无法控制使用属性“title”生成的工具提示的样式,因为它是OS本机组件。但是,您可以轻松调整在http://www.mkyong.com/jquery/how-to-create-a-tooltips-with-jquery/找到的代码。 您可以将工具提示的文本放在自定义属性中,我们称之为'toolTipText':

String tooltipMsg = Strings.toMultilineMarkup(yourMsgFromDb).toString(); 
...
yourLabel.add(AttributeModifier.append("toolTipText", tooltipMsg));

请注意,您必须使用toMultilineMarkup来维护工具提示中的换行符。 现在您应该稍微修改函数showTooltip以使用插入到自定义属性中的值:

var showTooltip = function(event) {
  $('div.tooltip').remove();

  $('<div class="tooltip">' + $(this).attr('toolTipText') +'</div>')
            .appendTo('body');

  changeTooltipPosition(event);
};

最后,您必须告诉JQuery使用工具提示和您的标记。您必须使用与您的组件匹配的选择器替换“span #hint,label#username'”。

我已经过测试,似乎有效。