【问题标题】:jQuery > reset popup window 's x and y relative to icon that launched the windowjQuery > 重置弹出窗口的 x 和 y 相对于启动窗口的图标
【发布时间】:2010-03-22 12:21:15
【问题描述】:

我有一个 jQuery jPicker colorpicker,它绑定到输入文本字段并打开一个小的 picker.gif 图标的 onclick。我遇到的问题是(1)打开的颜色选择器似乎没有根据 picker.gif 的 x/y 位置定位(它打开远离点击点)和(2)颜色选择器确实似乎不知道视口的滚动位置(颜色选择器的顶部部分隐藏在窗口顶部)。

我想使用 jQuery 重新定位调色板 (1) 基于其绑定到的输入的 x/y 位置和 (2) 根据视口的可见 Y 位置重置它的顶部位置。

这是我创建新 jPicker 并将其绑定到标题和侧边栏的输入文本字段的脚本...

$('#theme_header_color').jPicker
(
    {position: { x: $(this).offset.left + $(this).width(), y: ($(this).offset.top - $(window).scrollTop()) + $(this).height() }},
    function(color) 
    { 
        $(this).val(color.get_Hex());
    },
    function(color) 
    { 
        $(this).val(color.get_Hex()); 
    }
);

$('#theme_sidebar_color').jPicker
(
    {position: { x: $(this).offset.left + $(this).width(), y: ($(this).offset.top - $(window).scrollTop()) + $(this).height() }},
    function(color) 
    { 
        $(this).val(color.get_Hex());
    },
    function(color) 
    { 
        $(this).val(color.get_Hex()); 
    }
)

【问题讨论】:

    标签: jquery


    【解决方案1】:

    jPicker 已经设置为采用 x/y 坐标,因此您应该能够传递打开按钮的偏移量。您可能需要根据您的喜好调整按钮的高度和宽度以及任何填充。它未经测试,但应将其添加到 jPicker 设置中。

    position: { x: $(this).offset.left, y: $(this).offset.top }
    

    考虑按钮的高度和宽度。

    position: { x: $(this).offset.left + $(this).width(), y: $(this).offset.top + $(this).height() }
    

    更新

    考虑垂直滚动位置

    position: { x: $(this).offset.left + $(this).width(), y: ($(this).offset.top - $(window).scrollTop()) + $(this).height() }
    

    【讨论】:

    • 谢谢肖恩,在我上面的代码中,你会把立场声明放在哪里?我已将它放入空括号 {},但它没有设置相对于滚动位置的顶部(即,当点击时 picker.gif 图标靠近窗口顶部时,颜色选择器的顶部仍然隐藏。
    • 你把它放在正确的地方。我已经更新了上面的代码来说明滚动位置。
    • Shaun,我不确定我做错了什么,但代码似乎不会影响 x/y 位置。我已经用更新的代码编辑了我的问题。你看出什么不对了吗?
    • 您需要将位置放在窗口设置内 { window: { position: { y: '', x: '' } } } 在创建演示以测试我的答案后,我意识到那里尤其是在给定的上下文中,这不是简单的方法。我的建议是构建一个在颜色选择器加载时调用的函数,并可以检查滚动位置/窗口大小到它的相对位置。
    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多