2012-08-29 2 views
1

나는 Drupal을 사용하여 동적으로 컨텐트를 생성하고 있습니다. 다른 div 전에 div 배치하는 자바 스크립트를 실행하고 있습니다. 코드는 잘 작동하고, 다음과 같습니다JavaScript에서 선택한 클래스에 점진적으로 숫자를 추가 할 수 있습니까?

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

    }); 

내 문제는 그 내용이 동적으로 생성되기 때문에, 클래스 "보기 - 로우 - #"변화 점진적이다. 예를 들어, 페이지에 3 개의 요소 요소가있는 경우 Drupal은 첫 ​​번째 뷰에 대해 행 뷰 1, 두 번째 뷰에 뷰 행 2, 세 번째 뷰에 행 뷰 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') 
    }); 

내가 그것을이기 때문에 거기에 얼마나 많은 내용의 조각 결코 알지 못할 것이다 : 나는 그래서 같은 콘텐츠의 각 부분에 대한 코드의 라인을 작성 (적합하지 않은) 할 것을

동적, 그래서 자바 스크립트 클래스에 번호를 추가 할 찾고 있어요. 이것은 가능한가?

답변

0

각 행에 특정 클래스를 추가하고 여기에 'divAppend'라고 부릅시다.

는 다음을 수행 : 그것은 비록하지 꽤 전혀 작동

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(); 
}); 
​ 

: 당신이 뭔가를 시도 할 수 있습니다

$('.divAppend').each(function() { 
    $(this).insertBefore('whateveryouareinserting'); 
}); 
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); 
}); 
+0

도움 주셔서 감사합니다. –

+1

다음은이 솔루션을 구현할 수있는 방법입니다. 선택기에서'.'가 제거되지 않아 제거되었습니다. http://jsfiddle.net/bM4GK/2/ –

+0

@ juan.facorro : 감사합니다. –

0

. 여기에 fiddle이 있습니다.

0

내가 제대로 이해했다면 다음과 같은 것을 원하십니까?

var i = 1; 
$(function() { 
    $('.views-row-' + i++ + ' .content .body').insertBefore('.views-row-1 .content .field-name-field-image-one'); 
    }); 

편집 :

죄송합니다, 죄송합니다, 나는 바로 생각하지 않았다. 내가 틀렸을 때 죄송합니다. 질문을 이해하지 못했을 수도 있습니다.

var i = 1; 
$(".content.body").each(function(){ 
    $(this).insertBefore('.views-row-' + i + '.content.field-name-field-image-one'); 
    i++; 
}); 

이 클래스 "콘텐츠"를 갖는 각 요소와 "본체", "필드 이름 필드 화상 온"및 "뷰 행 클래스"콘텐츠 "인 요소 전에 삽입된다는 것을 의미 - # "

+0

정확히 무엇을해야합니까? 그것은 여전히 ​​첫 번째 요소에서만 실행됩니다. 루프가 없습니다. – Endy

+0

죄송합니다. 내가 도왔 으면 좋겠어. – tuks

0

드루팔 (Drupal도 각 콘텐츠에 대해"보기 행 ") 클래스를 만들었으므로 이것을 사용하지 못했습니다. 모든 도움을 주셔서 감사합니다, 창의적이고 유용한 솔루션을 많이!

$('.views-row').each(function(i,e) { 
    $('.content .body', e).insertBefore($('.content .field-name-field-image-one', e)); 
}); 
관련 문제