【问题标题】:jquery dialog multiple openjquery对话框多次打开
【发布时间】:2013-01-07 19:02:22
【问题描述】:

我有那个网址:

<a onClick="showDialog({$product['id']});">More Info...</a>

另外我还有:

function showDialog(productID)
{
    $( "#dialog-modal_"+productID ).html( "<iframe src='index.php?act=showProduct&amp;id="+productID+"' width='100%' height='100%' frameborder='0' scrolling='no'></iframe>" );
    $( "#dialog-modal_"+productID ).dialog({
    width: 810,
    height: 590,
    resizable: false,
    modal: true,
    open: function(event, ui)
    {
        event.preventDefault();
    }
    });
    container
        .dialog('option', 'title', 'Your Title')
        .dialog('option', 'buttons', {
            Close: function() {
                $(this).dialog('close');
            }
        })
        .dialog('open');

    var stateObj = { foo: "bar" };
    window.history.pushState(stateObj, "page 2", "{$info['siteurl']}/index.html#product-"+productID);

}

如果我在它工作后打开它,但如果我再试一次,它就无法打开。 我需要找到一种方法来“清除”当前 ID 的最后一个对话框。 对于不同的对话框,它的工作,但只有一次。

【问题讨论】:

    标签: javascript jquery html dialog


    【解决方案1】:

    在产品循环内部:

    <a href="javascript:" class="productOpener" data-id="{$product['id']}">more info...</a>
    

    还有你的javascript:

    $(".productOpener").click(function() {
        showDialog($(this).data("id"));
    });
    

    并修改您的 showDialog 以在需要时创建模态 div:

    function showDialog(productID) {
        var _modal = $("<div/>"); //add whatever styling you need
        _modal.html( "<iframe src='index.php?act=showProduct&amp;id="+productID+"' width='100%' height='100%' frameborder='0' scrolling='no'></iframe>" );
        _modal.dialog({ ... });
        ...
    }
    

    【讨论】:

    • 我为什么要编辑 showDialog() 所写的?它是如何改变的?
    • 动态添加_modal只是一个建议;在不了解您正在使用的dialog 插件的情况下,很难说为什么后续对话框没有出现。尽管如此,无论如何,动态创建_modal 应该可以使它工作。另一个注意事项:在 DOM 元素中使用 onClickconsidered bad practice
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多