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 将为第一个创建类 views-row-1,第二个创建 views-row-2,第三个创建 views-row-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

为每一行添加一个特定的类,在这里我们称之为“divAppend”。

然后做:

$('.divAppend').each(function() {
    $(this).insertBefore('whateveryouareinserting');
});
于 2012-08-29T16:28:41.717 回答
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 回答