0

ある div を別の 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 に答える