2

这是我的小提琴:http: //jsfiddle.net/Ya3w7/2/

HTML:

<img src="http://cdn.tacky.me/m/static/settings16.png" class="settings-icon"/>

<div id="control-panel">
    <img src="http://cdn.tacky.me/m/static/settings16.png" />
    <a href="#" style="float:right" id="close-cp">X</a>
    <div class="link_container"><a href="#">Show Profile</a></div>
</div>

CSS:

.settings-icon 
{
    margin: 100px;
    cursor: pointer;
}

#control-panel
{
    position: absolute;
    height: auto;
    width: auto;
    top: 0;
    left: 0;
    background-color: #fff;
    font-family: Arial, sans-serif;
    display: none;
    z-index: 4;
}

JavaScript:

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

$('#close-cp').click(function(event){
    event.preventDefault();
    $('#control-panel').hide();
});

我正在尝试做的事情: 我有一个设置图像,单击它会在这个 img 周围放置一个绝对定位的 div(称为 contgrol-panel)。

我所看到的:

我第一次点击img它工作正常

我通过单击右上角的 X 关闭控制面板

第二次点击控制面板出现在别的地方

如何复制

去小提琴

  • 第一次点击设置图标
  • 通过单击 X 关闭下拉的控制面板
  • 再次单击设置图标
  • 看到控制面板在其他地方弹出
4

2 回答 2

4

你只需要在控制面板关闭后将其恢复为0、0即可。这是更新的小提琴http://jsfiddle.net/Ya3w7/3/

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

$('#close-cp').click(function(event){
    event.preventDefault();
    $('#control-panel').css({top: '0px', left: '0px'}).hide();
});
于 2013-03-26T21:13:04.010 回答
0

因为 jquery ui 不支持对隐藏元素的定位,所以你必须显示和定位。

$('.settings-icon').click(function(){
  $('#control-panel').show().position({
    of: $(this),
    my: 'left top',
    at: 'left top'
   });
});
于 2014-11-20T15:00:51.550 回答