0

divをクリックするとjqueryダイアログを表示するコードを作成しました。現在、ダイアログはクリック位置の5ポイント後にポップアップします。

liの一番上の行からダイアログを表示しようとしています。これは、liの上部の境界線をダイアログの上部の境界線に揃える必要があることを意味します。liの上部境界位置を取得してダイアログを開く方法を見つけるために、正しいロジックを教えてもらえますか。

  <div class="editionDetailAction">Action for Item 1</div>
<div class="editionDetailAction">Action for Item 2</div>
<div class="editionDetailAction">Action for Item 3</div>
<div class="editionDetailAction">Action for Item 4</div>



<div id="actionsPopup">
    <ul><li><a href="http://www.google.com">Add xyz</a></li></ul>
    <ul><li>Manage xyz</li></ul>
    <ul><li>Show xyz</li></ul>
</div>


.editionDetailAction { width: 130px; height: 30px; border: solid 1px #ddd; }
.actionsPopup .ui-dialog-titlebar { display:none; }



$(document).ready(function () {
    $('.editionDetailAction').click(function (e) {
        $("#actionsPopup").dialog("option", { position: [e.pageX+5, e.pageY+5] });
    });

    $("#actionsPopup").dialog({
            autoOpen: false,  
dialogClass: 'actionsPopup',
        maxWidth:100,
                    maxHeight: 100,
                    width: 100,
        height: 80,
resizable: false,


    });
    $(".editionDetailAction").bind("click", function () {
        $("#actionsPopup").dialog('open'); 
    });
    $(".actionsPopup").bind("mouseover", function () {
        $("#actionsPopup").dialog('open');
    }); $(".actionsPopup").bind("mouseleave", function () {
        $("#actionsPopup").dialog('close');
    });

    $(".editionDetailAction").bind("mouseleave", function () {
        $("#actionsPopup").dialog('close'); 
    });


   });
4

1 に答える 1

1

これを試して:

$('.editionDetailAction').click(function() {
    var pos = $(this).position();
    $("#actionsPopup").dialog("option", {
        position: [pos.left+5, pos.top+5]
    });
});

例を参照してください: http://jsfiddle.net/Twisty/DZm9d/1/

于 2012-12-13T01:45:46.340 に答える