javascript - 使用带有选项卡和 Accordion 的 jQuery UI 时,如何显示所有可见的工具提示?

标签 javascript jquery html jquery-ui qtip2

我正在开发一个网络应用程序,我使用带有选项卡和 Accordion 的 jQuery UI 以及 qTip2(带有工具提示)。

我正在尝试创建一个“帮助”功能来切换所有可见工具提示的显示 - 当用户更改选项卡或 Accordion 时,工具提示应根据应显示的工具提示进行更新。

我创建了一个简单的 js-fiddle 示例,它很好地说明了这个问题。

http://jsfiddle.net/Z3My2/8/

HTML:

<div id="mainDiv">
    <div id="mapContainer">
        <div id="simple_map" style="display: inline-block">
            <p title='MapTitle' data-qtip2Enabled>Place map here</p>
        </div>
    </div>
    <button type="button" id="ShowHelp">Show all help messages</button>
    <div id="tabs">
        <ul>
            <li><a href="#queryTab">Search</a>

            </li>
            <li><a href="#parametersTab">Search results</a>

            </li>
        </ul>
        <div id="queryTab">
            <div id='search'>
                <p>Options</p>
                <div id='queryOptions'>
                        <h3>
                        <span id='option1' title='This is option 1' data-qtip2Enabled>Option 1</span>
                    </h3>

                    <div id='option1Div'> <a title="another title" data-qtip2Enabled>Some text</a>

                    </div>
                        <h3>
                        <span id='option2' title='This is option 2' data-qtip2Enabled>Option 2</span>
                    </h3>

                    <div id='option2Div' title="Some Title" style="display: inline-block" data-qtip2Enabled>LaLaLaLALA</div>
                </div>
            </div>
        </div>
        <div id="parametersTab">
            <div id="parametersTabText">Text.
                <br>
                <p title='lorum ipsum' data-qtip2Enabled>More text with tooltip.</p>
            </div>
        </div>
    </div>
    <!-- this div is a pop, and don't actually appear -->
    <div id="errorMessageDialog" title="Warning" hidden>this is not a qtip-title (with tag data-qtip2Enabled)</div>
</div>

Javascript:

$(document).ready(function () {
    $("#tabs").tabs();
    $('#ShowHelp').click(toggleHelp);
    $("#queryOptions").accordion({
        collapsible: true,
        active: false,
        heightStyle: "content"
    });
    $('[data-qtip2Enabled]').qtip();
});
var helpEnabled = false;

function enableHelp() {
    unbindHelp();
    $("DIV#tabs li").on("click", function () {
        showHelp();
    });
    $("DIV#search span").on("click", function () {
        showHelp();
    });
    helpEnabled = true;
}

function unbindHelp() {
    $("DIV#tabs li").unbind("click");
    $("DIV#search span").unbind("click");
}

function toggleHelp() {
    if (!helpEnabled) showHelp();
    else {
        helpEnabled = false;
        unbindHelp();
        //$('[data-qtip2Enabled]').qtip('destroy');
        $(".qtip-content").hide();
        $('[data-qtip2Enabled]').qtip({
            show: 'mouseenter',
            hide: 'mouseleave',
        });
    }
}

function showHelp() {
    if (!helpEnabled) enableHelp();
    $(".qtip-content").hide();
    $('[data-qtip2Enabled]').each(function () {
        $(this).qtip({
            show: true,
            hide: false,
            events: {
                focus: function (event, api) {
                    api.set('position.adjust.y', -5);
                },
                blur: function (event, api) {
                    api.set('position.adjust.y', 0);
                },
            },
        });
    });
}

任何帮助或指点将不胜感激:)

编辑:根据一些实验和 Rakesh Singh 的回答更新了代码和 fiddle 。

我仍然想知道如何不显示应该隐藏的工具提示 - 现在显示所有工具提示,但当 UI 更改时它们会更新到正确的位置。

最佳答案

随便放

$("DIV#tabs li").on("click",function(){
    showHelp();
});

在 jquery 就绪函数中。

我希望这会有所帮助。

关于javascript - 使用带有选项卡和 Accordion 的 jQuery UI 时,如何显示所有可见的工具提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24426484/

相关文章:

javascript - 递归过滤/减少嵌套对象

javascript - 移动子导航不会在一半时间内展开

jquery - 为什么 Jquery 不适用于 asp.net 中 LinkBut​​ton 的 CssClass 属性?

jquery - 静音/取消静音视频不起作用 - jQuery

javascript - 我的应用程序 URL 未在 PhantomJs 浏览器中打开

javascript - getJSON 不起作用。厌倦了js问题

javascript - Ajax 不为数据表调用 php 页面

javascript - 如何在单击时隐藏一个 div 并显示另一个?

html - 元视口(viewport)标签中 "initial-scale"的最小值是多少?

javascript - 使用 Canvas 的 Buggy 行为?