0

我正在尝试在另一个之前渲染一个 div。

我已经在我的本地机器上测试了 js,以确保它通过创建一个简单的页面来工作。代码如下:

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
    <div id="QWERTY">
        <div class="content">   
            <div class="field-name-field-image-one">IMAGE</div>
            <div class="body">BODY</div>
        </div>
    </div>       
<script>$('.content .body').insertBefore('.content .field-name-field-image-one'); // check before() examples</script>

</body>
</html>

我已将以下代码添加到我的 Drupal 站点上的 js 文件中:

(function ($, Drupal, window, document, undefined) {

    $('.content .body').insertBefore('.content .field-name-field-image-one'); // check before() examples

})(jQuery, Drupal, this, this.document);

我的 .info 文件链接到 js 并且正在加载。其他需要 javascript 的元素也可以工作。我什至尝试在 html.tpl 文件中添加脚本,但这也不起作用。

与我制作的简单版本相比,我试图影响的 div 嵌套在 html 标记的深处,并且应用了多个类。这可能是原因吗?我不够具体吗?

4

2 回答 2

0

感谢一些帮助,我已将其更新为以下内容,并且可以正常工作:

(function ($, Drupal, window, document, undefined) {
  $(function() {
    $('.content .body').insertBefore('.content .field-name-field-image-one'); // check before() examples
  });

})(jQuery, Drupal, this, this.document);
于 2012-08-29T14:43:52.170 回答
0

您不需要使用 Javascript 来更改内容类型中字段的顺序。

如果您使用的是 Drupal 7,请转到主页 » 管理 » 结构 (/admin/structure/types),然后单击要更改的内容类型旁边的“管理显示”。您现在可以拖放字段以更改它们在每种视图模式下的显示顺序(例如,默认、预告片)。

如果你真的想使用 Javascript 来做这件事,Drupal 7 使用了一种特殊的语法。

(function ($) {
  Drupal.behaviors.custom_moveimage = {
    attach: function (context, settings) {
      $('.content .body').insertBefore('.content .field-name-field-image-one');
    }
  };
}(jQuery));

Drupal 文档对此有更多信息

于 2012-08-31T03:24:45.147 回答