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 回答