1

モジュール内にモーダル ウィンドウに表示したいフォームがあります。IDによっては、ウィンドウが空白になるか、コンテンツが表示される場合はすべてのクラスとIDが削除されるため、フォームを検証またはスタイルできません。

切り詰められたコード: ...

  <div id="feedback">
    <div class="feedbackinner">
      <!-- form module  -->
        <div id="contact-wrapper">
          <!--form elements with ids and classes-->
        </div>
      <!-- end module -->
    </div><!-- end .feedbackinner -->
  </div><!-- end #feedback -->

これにより、id またはクラスなしでモーダル ウィンドウがトリガーされます (Firefox Web Developer アウトラインの現在の要素を使用)。

<a href="#contact-wrapper" class="modal" rel="{handler: 'clone', clone: 'contact-wrapper'}">Click for ugly unstyled form that won't validate</a>

これにより、空白のモーダル ウィンドウがトリガーされます。

<a href="#feedback" class="modal" rel="{handler: 'clone', clone: 'feedback'}">Click if you like staring at a blank white box</a>

最も重要なことは、すべての ID とクラスをモーダル ウィンドウ内に保持する方法と、親 div の呼び出しが機能しない理由です。

(回避策として、フォームをコンポーネントビューに移動し、handler: 'iframe'クローンの代わりに使用して呼び出しました。モーダルウィンドウで何が起こっているのかを知りたいです。)

ありがとう!

4

1 に答える 1

3

Element.cloneコードは見られませんが、要素で使用することの意味は明らかです。HTML の性質上、id一意であることを意味します。これは、同じ ID を持つ複数の要素を同時に DOM に挿入することは想定されていないことを意味します。

MooTools は、クローンを作成する要素から id を暗黙的に削除することで、感情を正しく反映します。

https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.js#L860

この.cloneメソッドは、オプションの引数を受け入れて、オーバーライドできるようにします。

clone: function(contents, keepid){- http://mootools.net/docs/core/Element/Element#Element:cloneも参照してください。

複製された要素も、割り当てた可能性のあるすべてのイベントを失います (ただし、それcloneEventsを助けることができます)。

スクイーズボックスの実装を見て、クローンが意図した方法で実装されていることを再確認することをお勧めします。代わりに、要素を採用して再アタッチするか、innerHTML 全体をコピーすることをお勧めします (ただし、これにより、委任されていないイベントが再び失敗します)。

于 2013-04-23T12:28:52.773 に答える