【问题标题】:jquery dialog fire open event twicejquery 对话框触发打开事件两次
【发布时间】:2026-02-07 11:15:01
【问题描述】:

jquery-ui 有问题。

我绑定了一个点击事件来打开一个对话框,但是对话框的 open 函数触发了两次。

click事件只触发一次,只是打开两个对话框的open函数

这是我的代码:

<div id="modalWindow">Cargando...</div>
    <script>
        $(document).ready(function () {
            var ventana = $("DIV#modalWindow");
            ventana.dialog({
                autoOpen: false,
                show: "slow",
                hide: "slow",
                width: 500,
                resizable: false,
                draggable: false,
                modal: true,
                closeOnEscape: true,
                Ok: function () { $(this).dialog("close").html("Cargando..."); },
                close: function () { $(this).html("Cargando..."); }
            });

            $("DIV.imagen_perfil img").click(function (evt) {
                //...some code
                    ventana.dialog({
                        title: "Subir Imagen",
                        open: function (event, ui) {
                            //...loads PartialView
                        }
                    });
                ventana.dialog("open");
            });

        });
        </script>

这是触发点击事件的 HTML:

<li>
    <label >Imagen de perfil:(Click en la Imagen Para Agregar):</label>
    <div class="imagen_perfil">
        <img src="~/images/imagen_pordefecto.png"/>
    </div>
</li>

【问题讨论】:

    标签: jquery jquery-ui asp.net-mvc-4 jquery-ui-dialog


    【解决方案1】:

    这是因为你在点击中再次调用dialog函数(触发第一个opencall,第二个是你实际调用open),如果你可以省略对话框函数,就解决了问题,如果你真的要改变对话框的信息,你应该使用option方法(而不是再次调用dialog

    ventana.dialog( "option", { title: 'New Title',open:function(){...} } );
    

    【讨论】: