【问题标题】:How do I go about opening href link in a jQuery Dialog?如何在 jQuery 对话框中打开 href 链接?
【发布时间】:2010-03-22 17:54:38
【问题描述】:

好的,所以我得到了下面显示的以下代码,用于在特定页面中使用 div 创建一个对话框:

    $('#modal').dialog({
    autoOpen: false,
    width: 600,
    height: 450,
    modal: true,
    resizable: false,
    draggable: false,
    title: 'Enter Data',
    close: function() { 
        $("#modal .entry_date").datepicker('hide');
    } 
 });

 $('.modal').click(function() {
    $('#modal').dialog('open');
 });

一切正常。但是,现在我想做的是也能够在对话窗口中打开一个链接。例如使用 类似于下面的代码:

<a href="/path/to/file.html" class="modal">Open Me!!</a>

我以前通过硬编码路径来完成此操作,如下面的示例代码所示:

$('#modal').load('/path/to/file.html').dialog('open');

但是,在这种情况下,我们无法在 javascript 中对路径进行硬编码,因为会有多个项目来自数据库。

在这一点上,我正在努力理解如何让它发挥作用。我也相信答案是非常明显的,我只是让自己被 StackOverflow 的聪明人谦卑。

今天下午我已经摸不着头脑了,所以我的自尊心已经放下了,希望有人能指出我如何正确编码的正确方向。

【问题讨论】:

  • 那么页面必须知道路径是什么不知何故,对吧?页面如何获取这些信息?当您得到答案时,您在打开对话框之前使用“加载”的方法非常接近您的需要。

标签: jquery jquery-ui jquery-ui-dialog


【解决方案1】:

你可以抓住 href 属性并加载它

$('.modal').click(function(e) {
    e.preventDefault();
    $('#modal').load(this.href).dialog('open');
});

【讨论】:

  • 成功了。我知道您可以通过某种方式获得 href,但是我尝试的所有操作都打开了链接,因为它并没有阻止浏览器首先打开链接!非常非常感谢!!!
【解决方案2】:

在此代码中,对话框的大小和标题在链接中声明

<script type="text/javascript">

    function tb_parseQuery(query) {
        var Params = {};
        if (!query) { return Params; }// return empty object
        var Pairs = query.split(/[;&]/);
        for (var i = 0; i < Pairs.length; i++) {
            var KeyVal = Pairs[i].split('=');
            if (!KeyVal || KeyVal.length != 2) { continue; }
            var key = unescape(KeyVal[0]);
            var val = unescape(KeyVal[1]);
            val = val.replace(/\+/g, ' ');
            Params[key] = val;
        }
        return Params;
    }
    $(document).ready(function () {
        $('a.uimodal').bind('click', function () {

        var $this = $(this);
        var url = $this.attr("href");



        var queryString = url.replace(/^[^\?]+\??/, '');
        var params = tb_parseQuery(queryString);
        TB_WIDTH = (params['width'] * 1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
        TB_HEIGHT = (params['height'] * 1) + 40 || $(document).height(); //defaults to 440 if no paramaters were added to URL
            TB_Title = (params['title']);



        $('<div>').dialog({
            modal: true,
            open: function () {
                $(this).load(url);
            },
            height: TB_HEIGHT,
            width: TB_WIDTH,
            title: TB_Title
        });
        return false;
    });
    });
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <a class="uimodal" href="Dialog.aspx?height=350&width=700&title=تست"> click</a>
    </div>
    </form>
</body>
</html>

【讨论】:

    【解决方案3】:

    Phil,你需要获取href 属性:

    var link = $('#modal').attr('href');
    $('#modal').load(href).dialog('open');
    

    【讨论】:

    • 你忘了说你需要禁止锚标签向服务器发送请求。这是通过preventDefaultreturn false; 停止浏览器上的传播来完成的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多