2014-01-19 3 views
0

'right_arrow'클래스를 클릭 한 후 아래의 'title_head'div에서 다음 텍스트의 값을 가져 오려고합니다.자매 div의 텍스트 값을 Jquery와 함께 표시 하시겠습니까?

<div class="header"> 
    <div class="col-md-8 title"> 
     <div class="title_head">SHIRT</div> 
     <div class="title_head" style="display:none">COLLAR</div> 
     <div class="title_head" style="display:none">BUTTON</div> 
     <div class="title_head" style="display:none">SLEEVE</div> 
    </div> 
    <div class="col-md-4 right_arrow"><img src="img/arrows-right.png" alt=""></div> 
</div> 

내 jQuery 코드는 다음과 같습니다.

var current = $('.title_head:visible').text(); 
var first = $('.title_head').first().text(); 
var last = $('.title_head').last().text(); 

$('.right_arrow').click(function(){ 
    if(current == last){ 
     $('.right_arrow').css('opacity','0.3'); 
     $('.right_arrow').css('cursor','default'); 
    }else{ 
     $(current).css('display','none'); 
     var val = $('.title_head').nextAll('.title_head:first').text(); 
     var next_val = $('.title_head').text(val); 
     alert(next_val); 
    } 
}); 

내가 겪고있는 문제는 'next_val'값을 경고 할 때 객체 배열을 반환한다는 것입니다. 다른 div의 모든 값을 "COLLARBUTTONSLEEVE"가 아닌 "COLLAR", "BUTTON", "SLEEVE"와 같은 전체 값으로 가져 오는 것이 좋습니다.

나는 또한 다음 요소 텍스트를 표시로 표시하고 텍스트 슬라이더와 같은 이전에 표시되는 텍스트 정렬을 숨길 필요가 있습니다.

분명히하는 것이 좋겠습니다. 사전에 도움을 주셔서 감사합니다.

+0

이 줄'var next_val = $ ('. title_head') .text (val);'은 jQuery 객체를 반환합니다. 텍스트를 얻고 싶다면 이것을 할 수 있습니다.'next_val.text()'http://api.jquery.com/text/의 검은 머리글을 보면 함수 호출의 반환 유형을 볼 수 있습니다. 코드를 검사하지는 않았지만 배열이면'next_val [0]'또는 다른 인덱스를 사용하여 값을 얻을 수 있습니다. – surfmuggle

+0

나에게 당신이 달성하기를 원하는 것이 분명하지 않다. 사용자가 right_arrow 클래스를 클릭하면 a) 첫 번째 title_head = SHIRT 또는 b) 두 번째 title_head = collar의 값이 반환되어야 하는가? 그것은 a) 또는 b)입니까? – surfmuggle

+0

@threeFourOneSixOneThree님께 감사드립니다. Rayan Bouajram은 내 문제에 대한 완벽한 해답을 얻었습니다. – user875139

답변

1

좀 더 이런 일에 자바 스크립트를 다시 작성할 수 :

var items = $('.title_head'), 
    index = 1; //start at position 

$('.right_arrow').click(function(){ 

    if(items.length > index) { 
     $('.title_head').hide(); 

     var $nextEl = $($('.title_head')[index++]), 
      val = $nextEl.html(); 

     $nextEl.show(); 
     alert(val); 
    } 
    if(items.length === index) { 
     $('.right_arrow').css('opacity','0.3'); 
     $('.right_arrow').css('cursor','default'); 
    } 
}); 

가 바이올린을 참조하십시오http://jsfiddle.net/rK4KR/1/

당신이 노드의 배열을 다시 반환됩니다 .title_head를 쿼리 할 때. 우리는 단순히 배열의 각 위치를 살펴보고 값을 파싱 할 수 있습니다. 그렇게하면 어떤 노드가 표시되는지 항상 확인하지 않아도됩니다.

+0

선생님은 천재입니다! 도와 줘서 고마워. 매력처럼 작동합니다! – user875139

+0

@ user875139 언제든지 :). 다행스럽게 도울 수있어! –

+0

@Ryan Bouajram 만약 내가 뒤쪽으로 가기 위해 왼쪽 화살표를 추가했다면 어떨까요? 솔루션에이를 통합하는 방법을 보여줄 수 있습니까? 나는 몇 가지를 직접 시도했지만 그것은 효과가 없다. 내가 시도한 것은 var $ prevEl = $ ($. 'title_head') [index--], \t val = $ prevEl.html(); 그러나 그것은 작동하지 않았다. 감사합니다 – user875139

관련 문제