YUI工具提示不显示在面板顶部

目前,有好一会才显示以前创建后,YUI工具提示在YUI面板顶部显示一个问题。 问题是在于小组无法注册到覆盖管理器,因为它需要的代码,一吨可以改变和测试延长硬盘的最后期限。 得到这个工作的唯一方法是设置面板显示工具提示 。 问题是存在的,将有工作要做,以将另一个函数调用的代码量的变化。 我的问题是,我希望我可以使用事件处理使用"showEvent"但我似乎无法得到它的工作(我的字数道歉):

var panel_obj = new YAHOO.widget.Panel('someID', { width: "700px", height: "500px", close: true, draggable: false, modal: true, constraintoviewport: true, visible: false, fixedcenter: true }); panel_obj.render(); var tooltip_name = 'newTooltip1'; var element_id = 'htmlElementIDToBecomeTooltip'; function createTooltip() { window[tooltip_name] = new YAHOO.widget.Tooltip(tooltip_name, { context: element_id, xyoffset: [15, -15], zIndex: 999 }); } function successfulScenario() { panel_obj.show(); createTooltip(); } function failedScenario1() { YAHOO.util.Event.addListener( 'someID', "showEvent", createTooltip ); } function failedScenario2() { createTooltip(); panel_obj.show(); }

我唯一的办法似乎得到它的工作是通过运行这样successfulScenario() 我是从一个jQuery背景的,所以我还在学习YUI。 我很想能够只扩展(子类)YAHOO.widget.Panel的show()函数来调用createTooltip但我没有太大的大师,或者我可能会需要改变一个非常大的代码库来做到这一点。

--------------解决方案-------------

尝试使用“容器”属性的工具提示配置(因此容器将是面板的元素):

function createTooltip() {
window[tooltip_name] = new YAHOO.widget.Tooltip(tooltip_name, {
container: panel_obj.element,
context: element_id,
xyoffset: [15, -15]
});
}

这是快速的解决方案,使用show事件和/或延长类将是不错,但总得来看,如果你还需要帮助,我会回来检查(也检查我与你的代码HTTP所做的例子://的jsfiddle .NET / 3GWaM / 2 /)。

function createTooltip() {
var tooltipEl = document.createElement('DIV');
panel_obj.get('element').appendChild(tooltipEl);
window[tooltip_name] = new YAHOO.widget.Tooltip(tooltipEl, {
context: element_id,
xyoffset: [15, -15],
zIndex: 999
});
}

这将确保刀尖DIV是对话框内创建,而不是在文档正文,以确保它不会出现下面的对话框。

另外,如果你想扩展面板类只是做以下

function MyPanel(el, config) {
MyPanel.superclass.constructor.apply(this, arguments);
this.createToolTip();
}

YAHOO.lang.extend(MyPanel, YAHOO.widget.Panel , {
createToolTip: function () {
// create tool tip here
this.on('show', this.showTooltip, this, true);
},
showToolTip: function () {this.toolTip.show();}
});

function getPanelIDFromElementID (element_id) {
var parent_panel = YAHOO.util.Dom.getAncestorByClassName(element_id, 'yui-panel');
var parent_id = null;
if (parent_panel) {
parent_id = parent_panel.id;
}
return parent_id;
}
function createTooltips() {
var tooltip_elements = YAHOO.util.Dom.getElementsByClassName('tooltip');

for (var i = 0; i < tooltip_elements.length; i++) {
var ele_id = tooltip_elements[i].getAttribute('id');
var name = ele_id.charAt(0).toLowerCase() + ele_id.slice(1);
var nameArray = name.split("_");

for (var x=1; x < nameArray.length; x++) {
nameArray[x] = nameArray[x].charAt(0).toUpperCase() + nameArray[x].slice(1);
}

var elementName = nameArray.join('');

window[elementName] = new YAHOO.widget.Tooltip(elementName, {
context: escape(ele_id),
xyoffset: [15, -15],
zIndex: 999,
container: getPanelIDFromElementID(ele_id)
});
}
}

分类:JavaScript的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.758 (s). 10 q(s)