4

さて、特定のページ内で 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 の賢明な人々に謙虚になれるように自分自身を設定しているだけです。

今日の午後、私は長い間頭をかきむしっていたので、私の自我は片付けられました。これを適切にコーディングする方法について、誰かが私を正しい方向に向けてくれることを願っています。

4

3 に答える 3

6

href 属性を取得してロードするだけです

$('.modal').click(function(e) {
    e.preventDefault();
    $('#modal').load(this.href).dialog('open');
});
于 2010-03-22T17:56:38.870 に答える
1

このコードでは、ダイアログのサイズとタイトルはリンクで宣言されています

<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>
于 2012-12-14T19:35:02.833 に答える
0

フィル、href属性を取得する必要があります:

var link = $('#modal').attr('href');
$('#modal').load(href).dialog('open');
于 2010-03-22T17:58:04.420 に答える