【问题标题】:Why jQuery Tooltip position is not changing?为什么 jQuery Tooltip 位置没有改变?
【发布时间】:2014-10-13 22:29:50
【问题描述】:

我无法让 jQuery-ui 工具提示更改位置。现在它出现在鼠标下方,因此在使用下拉列表时会出现问题。我已经更改了偏移量,但没有任何区别。当我在 jQuery ui 文档中查找它时,它没有显示偏移函数。我的代码有什么问题(页面上没有错误)

当前(指针下方):

jQuery( document ).tooltip({ offset: [450, 570], delay: 4000, effect: 'slide' });

试过这个,同样的位置:

jQuery( document ).tooltip({ offset: [900, 1000], delay: 4000, effect: 'slide' });

从 JQ ui Docs 中尝试过,但它完全改变了工具提示,但将其全部变为一行,并且会离开页面:

jQuery( document ).tooltip({ "option", "position", { my: "left+15 center", at: "right center" } );

【问题讨论】:

    标签: jquery jquery-ui tooltip


    【解决方案1】:

    您在前两行中指定的选项不是工具提示的有效 jQueryUI 小部件选项。写这个:

    jQuery( document ).tooltip({ offset: [450, 570], delay: 4000, effect: 'slide' });
    

    相当于根本不传递任何选项:

    jQuery( document ).tooltip({});
    

    虽然可以说小部件初始化程序不应该默默吞下无效选项,但它目前正是这样做的。


    delayeffect 对工具提示的 showhide 选项有效,您可能打算在那里使用它们:

    jQuery( document ).tooltip({
        show: { delay: 4000, effect: 'slide' },
        hide: { delay: 4000, effect: 'slide' }
    });
    

    至于意外的position 行为,这可能是因为collision 的默认值。当您不指定position 时,the widget's initialiser 默认为flipfit flip

        position: {
            my: "left top+15",
            at: "left bottom",
            collision: "flipfit flip"
        },
    

    但是,当您指定 position,但不包含 colision 时,the position plugin 将默认为 flip

    collision = ( options.collision || "flip" ).split( " " )
    

    jQueryUI 充满了这些小问题,但它们都有很好的文档记录。我强烈建议在使用插件之前通读文档。当您开始修改默认值时,您的工具提示的行为可能会更加可预测(例如 top+30 而不是我无法想象您需要的 left+15;或者使用 track: true 来确保位置使用鼠标坐标而不是包含元素)。从那里开始,如果您需要更具体的帮助,请制作类似 jsfiddle 的东西来演示确切的问题。

    【讨论】:

    • 非常感谢@blgt!你的解释很有帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2022-12-06
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多