1

Drupal を使用してコンテンツを動的に生成しています。別の div の前に div を配置する JavaScript を実行しています。コードは正常に動作し、次のようになります。

  $(function() {
    $('.views-row-1 .content .body').insertBefore('.views-row-1 .content .field-name-field-image-one');

   });

私の問題は、コンテンツが動的に生成されるため、クラス「views-row-#」が段階的に変化することです。たとえば、ページに 3 つのコンテンツ要素がある場合、Drupal は最初の要素にビュー行 1、2 つ目にビュー行 2、3 つ目にビュー行 3 というクラスを作成します。

私が行ったこと (これは理想的ではありません) は、次のように各コンテンツのコード行を書き出すことです。

  $(function() {
    $('.views-row-1 .content .body').insertBefore('.views-row-1 .content .field-name-field-image-one'); // check before() examples
    $('.views-row-2 .content .body').insertBefore('.views-row-2 .content .field-name-field-image-one'); // check before() examples
    $('.views-row-3 .content .body').insertBefore('.views-row-3 .content .field-name-field-image-one'); // check before() examples
    $('.views-row-4 .content .body').insertBefore('.views-row-4 .content .field-name-field-image-one') 
   }); 

動的であるため、コンテンツがいくつになるかはわかりません。そのため、JavaScriptでクラスに番号を追加することを検討しています。これは可能ですか?

4

4 に答える 4

1
$('[class^="views-row"]').each(function(){

    var className = //get classname to insert before 
   //not sure if .index() will help you since you have not posted your HTML

   $(this).find('.content .body').insertBefore(className);
});
于 2012-08-29T16:31:08.193 に答える
0

Drupal はコンテンツごとに "view-row" クラスも作成するため、これを使用することになりました。しかし、多くの創造的で便利なソリューションを提供してくれてありがとう!

$('.views-row').each(function(i,e) {
  $('.content .body', e).insertBefore($('.content .field-name-field-image-one', e));
});
于 2012-08-29T16:43:29.410 に答える
0

次のようなことを試すことができます:

function iterate () {
    var view = null;
    var i = 1;
    while ((view = $('.views-row-' + i + ' .content .body')).size() > 0) {
        alert(view.text());
        view.insertBefore('.views-row-' + i + ' .content .field-name-field-image-one');
        i++;
    }    
}
$(function() {
    iterate();
});
​

まったくきれいではありませんが、機能します。これがフィドルです。</p>

于 2012-08-29T16:37:29.477 に答える
0

行ごとに特定のクラスを追加します。ここでは「divAppend」と呼びましょう。

次に、次のようにします。

$('.divAppend').each(function() {
    $(this).insertBefore('whateveryouareinserting');
});
于 2012-08-29T16:28:41.717 に答える