猿问

jQuery UI-在外部单击时关闭对话框

我有一个jQuery UI对话框,当单击特定元素时会显示该对话框。如果单击不是在那些触发元素或对话框本身上的任何地方发生的,我想关闭对话框。


这是打开对话框的代码:


$(document).ready(function() {

    var $field_hint = $('<div></div>')

        .dialog({

            autoOpen: false,

            minHeight: 50,

            resizable: false,

            width: 375

        });


    $('.hint').click(function() {

        var $hint = $(this);

        $field_hint.html($hint.html());

        $field_hint.dialog('option', 'position', [162, $hint.offset().top + 25]);

        $field_hint.dialog('option', 'title', $hint.siblings('label').html());

        $field_hint.dialog('open');

    });

    /*$(document).click(function() {

        $field_hint.dialog('close');

    });*/

});

如果我取消注释的最后一部分,该对话框将永远不会打开。我认为这是因为打开对话框的同一点击再次将其关闭。


最终工作代码

注意:这是使用jQuery外部事件插件


$(document).ready(function() {

    // dialog element to .hint

    var $field_hint = $('<div></div>')

            .dialog({

                autoOpen: false,

                minHeight: 0,

                resizable: false,

                width: 376

            })

            .bind('clickoutside', function(e) {

                $target = $(e.target);

                if (!$target.filter('.hint').length

                        && !$target.filter('.hintclickicon').length) {

                    $field_hint.dialog('close');

                }

            });


    // attach dialog element to .hint elements

    $('.hint').click(function() {

        var $hint = $(this);

        $field_hint.html('<div style="max-height: 300px;">' + $hint.html() + '</div>');

        $field_hint.dialog('option', 'position', [$hint.offset().left - 384, $hint.offset().top + 24 - $(document).scrollTop()]);

        $field_hint.dialog('option', 'title', $hint.siblings('label').html());

        $field_hint.dialog('open');

    });


    // trigger .hint dialog with an anchor tag referencing the form element

    $('.hintclickicon').click(function(e) {

        e.preventDefault();

        $($(this).get(0).hash + ' .hint').trigger('click');

    });

});


喵喵时光机
浏览 609回答 3
3回答

素胚勾勒不出你

查看jQuery Outside Events插件让您做:$field_hint.bind('clickoutside',function(){&nbsp; &nbsp; $field_hint.dialog('close');});
随时随地看视频慕课网APP
我要回答