Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery UI-使用position API定位隐藏的div未正确定位_Jquery_Jquery Ui - Fatal编程技术网

jQuery UI-使用position API定位隐藏的div未正确定位

jQuery UI-使用position API定位隐藏的div未正确定位,jquery,jquery-ui,Jquery,Jquery Ui,我试图使用jquery UI API(#changer相对于.demo)在下面的HTML中定位一个div 注意: 第一次就可以了 如果我移除.fadeOut并将位置移动到下面的代码外部,同样可以正常工作 如果在.position之前添加.hide,同样会失败。((即)$(“#变换器”).hide().position) 我很想知道我做错了什么。状态“注意:jQuery UI不支持定位隐藏元素”。因此,通过先淡出元素,可以阻止.position()正常工作。由于.fadeOut()应用显示:无

我试图使用jquery UI API(
#changer
相对于
.demo
)在下面的HTML中定位一个div

注意:

  • 第一次就可以了
  • 如果我移除
    .fadeOut
    并将
    位置移动到下面的代码外部,同样可以正常工作
  • 如果在
    .position
    之前添加
    .hide
    ,同样会失败。((即)
    $(“#变换器”).hide().position

    我很想知道我做错了什么。

    状态“注意:jQuery UI不支持定位隐藏元素”。因此,通过先淡出元素,可以阻止
    .position()
    正常工作。由于
    .fadeOut()
    应用
    显示:无到元素,它没有位置,因此无法相对移动

    但是,您可以使用
    .animate()
    仅更改不透明度:

    演示:

    jQuery:

    $('.demo').click(function() {
        var _that = this;
        $("#changer").animate({
            "opacity": 0
        }, 100, function() {
            $(this).position({
                of: _that,
                my: 'left top',
                at: 'right top',
                offset: '10 10'
            }).animate({
                "opacity": 1
            }, 100)
        });
    });​
    

    注意,我删除了
    display:none。

    翻转
    .position(…)
    .show()
    ——jQuery UI
    position
    插件无法正确计算隐藏元素的位置

    $('.settings-icon').click(function(){
      $('#control-panel').show().position({
        of: $(this),
        my: 'left top',
        at: 'left top'
       });
    });
    

    这有用吗@詹姆斯克利谢谢你。。是的。。但我想知道为什么
    .position
    会把它搞砸。我不熟悉position API,但从一眼看,它似乎必须是一个子元素才能正常工作。这并不能解释为什么删除淡出会修复它。@JamesKleeh mm不。。没有帮助,mm说得通。。谢谢,我刚刚开始挖掘jquery代码:)第一次达到了200次/天的限制,这是你应得的。我花了至少20分钟试图解决这个问题,当他张贴它。有时候,你只需要阅读整个文档,而不是试图编写代码稍微解释一下就好了。@G.Samaras解释补充;)@扎乌斯博士,我希望原作者能加上它,而不是你(不,我和你有点关系……但这是他的答案!:O;)。
        $("#changer").position({
            of: this,
            my: 'left top',
            at: 'right top',
            offset: '10 10'
        }).show();
    
    $('.demo').click(function() {
        var _that = this;
        $("#changer").animate({
            "opacity": 0
        }, 100, function() {
            $(this).position({
                of: _that,
                my: 'left top',
                at: 'right top',
                offset: '10 10'
            }).animate({
                "opacity": 1
            }, 100)
        });
    });​
    
    $('.settings-icon').click(function(){
      $('#control-panel').show().position({
        of: $(this),
        my: 'left top',
        at: 'left top'
       });
    });