3

私は社内でプロジェクトに取り組んでおり、すべての顧客がリストされているテーブルをクリックすると、simplemodalを使用して顧客情報を表示したいと考えています。

しかし、これは私にいくつかの問題を引き起こしました、そしてそれで私は今あなたたちに尋ねています。

これはこれまでの私のコードです:

<table border="0" cellpadding="0" cellspacing="0" id="customertable" class="sortable">
<thead>
    <tr class="odd">
        <th>Navn</th>
        <th>Telefon</th>
        <th>Postnummer</th>
        <th>By</th>
    </tr>
</thead>
<tbody>
{foreach $results as $customer}
{strip}
   <tr class="{cycle values='even,odd'}">
      <td class="name" id='mousetracking' title={$customer.name}><a href="#" id="osx{$customer.customerid}">{$customer.name}</a></td>
      <td class="data">{$customer.phone}</td>
      <td class="data">{$customer.postcode}</td>
      <td class="data">{$customer.city}</td>
   </tr>
{/strip}
        <!-- modal content -->
        <div class="modalhidden">
            <div id="osx-modal-content{$customer.customerid}">
                <div id="osx-modal-title">Customer no #{$customer.customerid}</div>
                <div class="close"><a href="#" class="simplemodal-close">x</a></div>
                <div id="osx-modal-data">
                    <h2>Hello! I'm Customer no. #{$customer.customerid}</h2>
                </div>
            </div>
        </div>
{/foreach}
</tbody>
</table>
Displaying {$total} records<br />

<script type="text/javascript">
function addModal(x)
{
    $("osx" + x).addEvent("click", function(){
          var SM = new SimpleModal();
              SM.show({
                "title":"Title",
                "contents": $("#osx-modal-content" + x).html()
              });
        });

}
</script>

お気づきかもしれませんが、私はテンプレートにsmartyを使用していますが、これは問題なく機能します。

また、単一のsimplemodalは正常に機能しますが、コンテンツが異なる複数のsimplemodalが必要です。

質問は、これが良い考えなのか、それとも別のページにあるべきなのかということです。

ここでいくつかの情報が不足しているかどうか教えてください-これは私の最初の投稿です:-)

よろしく、フレデリク

編集

私は今このコードを持っています:

<table border="0" cellpadding="0" cellspacing="0" id="customertable" class="sortable">
<thead>
    <tr class="odd">
        <th>Navn</th>
        <th>Telefon</th>
        <th>Postnummer</th>
        <th>By</th>
    </tr>
</thead>
<tbody>
{foreach $results as $customer}
{strip}
   <tr class="{cycle values='even,odd'}">
      <td class="name" id='mousetracking' title={$customer.name}><a href="#" id="{$customer.customerid}">{$customer.name}</a></td>
      <td class="data">{$customer.phone}</td>
      <td class="data">{$customer.postcode}</td>
      <td class="data">{$customer.city}</td>
   </tr>
{/strip}
        <!-- modal content -->
        <!--<div class="modalhidden">-->
            <div id="modal_{$customer.customerid}">
                <div id="osx-modal-title_{$customer.customerid}">Customer no #{$customer.customerid}</div>
                <div class="close"><a href="#" class="simplemodal-close">x</a></div>
                <div id="osx-modal-data_{$customer.customerid}">
                    <h2>Hello! I'm Customer no. #{$customer.customerid}</h2>
                </div>
            </div>
        <!--</div>-->
{/foreach}
</tbody>
</table>
Displaying {$total} records<br />

このJSコードと一緒に:

jQuery(function ($) {
    var OSX = {
        container: null,
        init: function () {
            $("a").click(function (e) {
                e.preventDefault(); 

                $('#modal_' + this.id).modal({
                    overlayId: 'osx-overlay',
                    containerId: 'osx-container',
                    closeHTML: null,
                    minHeight: 80,
                    opacity: 65, 
                    position: ['0',],
                    overlayClose: true,
                    onOpen: OSX.open,
                    onClose: OSX.close
                });
            });
        },
        open: function (d) {
            var self = this;
            self.container = d.container[0];
            d.overlay.fadeIn('slow', function () {
                $('#modal_' + this.id, self.container).show();
                var title = $('#osx-modal-title_' + this.id, self.container);
                title.show();
                d.container.slideDown('slow', function () {
                    setTimeout(function () {
                        var h = $('#osx-modal-data_' + this.id, self.container).height()
                            + title.height()
                            + 20; // padding
                        d.container.animate(
                            {height: h}, 
                            200,
                            function () {
                                $("div.close", self.container).show();
                                $('#osx-modal-data_' + this.id, self.container).show();
                            }
                        );
                    }, 300);
                });
            })
        },
        close: function (d) {
            var self = this; // this = SimpleModal object
            d.container.animate(
                {top:"-" + (d.container.height() + 20)},
                500,
                function () {
                    self.close(); // or $.modal.close();
                }
            );
        }
    };

    OSX.init();

});

および元のjquery.simplemodal.js

私の唯一の問題は、モーダルに正しいdivをロードするが、そのdivが非表示になっていることです。

4

1 に答える 1

2

大丈夫。私はそれを自分で修正することができました。

このコードで終わった:

<table border="0" cellpadding="0" cellspacing="0" id="customertable" class="sortable">
<thead>
    <tr class="odd">
        <th>Navn</th>
        <th>Telefon</th>
        <th>Postnummer</th>
        <th>By</th>
    </tr>
</thead>
<tbody>
{foreach $results as $customer}
{strip}
   <tr class="{cycle values='even,odd'}">
      <td class="name" id='mousetracking' title={$customer.name}><div id="basic-modal"><a href="#" id="{$customer.customerid}">{$customer.name}</a></div></td>
      <td class="data">{$customer.phone}</td>
      <td class="data">{$customer.postcode}</td>
      <td class="data">{$customer.city}</td>
   </tr>
{/strip}
{/foreach}
</tbody>
</table>
{foreach $results as $customer}
{strip}
        <!-- modal content -->
        <div id="basic-modal-content_{$customer.customerid}" style="display:none;" width="600px">
            <h3>{$customer.name}</h3>
            <table border="0" cellpadding="0" cellspacing="0">
                <tr>
                    <td width="150px;">Adresse</td>
                    <td>{$customer.address1}<br />{$customer.postcode}&nbsp;{$customer.city}</td>
                </tr>
                <tr>
                    <td width="150px;">Telefon</td>
                    <td>{$customer.phone}</td>
                </tr>
                <tr>
                    <td width="150px;">Fax</td>
                    <td>{$customer.fax}</td>
                </tr>
                <tr>
                    <td width="150px;">Email</td>
                    <td>{$customer.email}</td>
                </tr>
                <tr>
                    <td width="150px;">Website</td>
                    <td>{$customer.web}</td>
                </tr>
            </table>
            <br /><br />
            <h4>Server Setup</h4>
            <code>{$customer.Server_setup}</code>
        </div>
{/strip}
{/foreach}
Displaying {$total} records<br />

この JavaScript と一緒に:

jQuery(function ($) {
    // Load dialog on page load
    //$('#basic-modal-content').modal();

    // Load dialog on click
    $('#basic-modal a').click(function (e) {
        $('#basic-modal-content_' + this.id).modal({
            overlayClose:true
        });
        return false;
    });

});

そして、それは魅力のように機能します。

すべての入力に感謝します。

于 2012-04-24T16:44:36.907 に答える