1

.load() メソッドを使用してリストに要素を追加して、別のページから要素を取得しようとしています。

しかし、このメソッドを使用すると、リストに追加するのではなく、現在の DOM 要素を削除して置き換えます。

どんな助けでも大歓迎です。

以下のコード:

var $container = $('#container');
$('#insert a').click(function () {
          var newEls;

          $container.load('../pages/2.html .element', function () {
              newEls = $(this);
          });
          $container.isotope('insert', $(newEls));

          return false;
      });
4

1 に答える 1

0

確かに、ロードされた後に挿入するようにアイソトープに指示する必要があります。

例えば

      $container.load('../pages/2.html .element', function () {
          newEls = $(this);
          $container.isotope('insert', $(newEls));
      });

それ以外の場合は、現在のコンテンツ (または空の div) をロードする前に挿入しています。

ロード$container.isotope('insert', $(newEls));が開始される前に実行されます (ロードは非同期であるため、コールバック/関数内にある場合にのみ、ロードされたデータに対して何かを実行することを信頼できます)。

これに加えて、「#container」の内容全体をリロードしているため、以前の子が単純に消去されます。たとえば、ダミー要素にロードしてからコンテナに追加するなどして、コンテンツを追加する必要があります。

おそらく次のようなものです(テストされていません):

var $container = $('#container');
$('#insert a').click(function () {
          var $newEls;
          $container.append('<div id="#loadme"></div>');
          var $loadme = $('#loadme');
          $('#loadme').load('../pages/2.html .element', function () {
              $newEls = $loadme.children();
              $loadme.children().unwrap();
              $container.isotope('insert', $newEls);
          });

          return false;
      });

通常load、この状況では使用しませんが、AJAXgetを呼び出して、返された要素を追加します。はるかに簡単です。

于 2013-10-03T09:50:19.007 に答える