2013-04-19 6 views
2

div의 원래 텍스트를 가져오고 사용자가 창 (반응 형 사이트)의 크기를 조정할 때이 텍스트를 변경하는 간단한 함수가 있습니다. 사용자가 창을 다시 확대하면 원본 텍스트가 표시되어야합니다. 그것은 매우 간단하지만 작은 문제가 있습니다.원래 텍스트를 한 번만 저장하십시오.

function limitH2Text() { 
     var origText = $(".result .right .mask").text(); 
     var width = $(window).width(); 
     if (width < 811) { 
      $(".result .right .mask").each(function() { 
       var $this = $(this); 
       $this.text($this.text().slice(0, 75)); 
       $this.append('...').show(); 
      }); 
     } else { 
      $(".result .right .mask").each(function() { 
       $(this).text(origText); 
      }); 
     } 
    } 

콘솔에는 var origText에 [.result .right .mask] div가 3 개 포함되어 있음이 표시됩니다. 알다시피, HTML은 [.result .right .mask]를 반복 한 것입니다. 따라서 (예를 들어) 'hello this is the text'대신 'hello this is the text hello 이것은 텍스트 안녕하세요 이것은 텍스트입니다'라고 표시됩니다. 사용자가 크기를 조정하면 브라우저가 기하 급수적으로 커집니다. 그 div의 텍스트를 한 번만 저장하는 방법을 알아낼 수 없습니까?

도움 주셔서 감사합니다.

답변

1

.eq()을 사용하여이 시도 :

var origText = $(".result .right .mask").eq(0).text(); 

이 지정된 인덱스의 하나에 일치하는 요소의 집합을 줄일 수 그 한 div의 텍스트를 저장하십시오.

+2

작품, 고마워요! –

+0

도움이 되니 기쁩니다! –

0

당신은 그것의 데이터 origText 속성에 원본 텍스트를 저장할 수

function limitH2Text() { 
     var origText = $(".result .right .mask").text(); 
     $(this).attr("data-origText", origText ); 
     var width = $(window).width(); 
     if (width < 811) { 
      $(".result .right .mask").each(function() { 
       var $this = $(this); 
       $this.text($this.text().slice(0, 75)); 
       $this.append('...').show(); 
      }); 
     } else { 
      $(".result .right .mask").each(function() { 
       $(this).text($(this).attr("data-origText")); 
      }); 
     } 
    } 
+0

작동하지만 eq (0)가 더 빠르고 쉽습니다. –

+0

@MathijsDelva 작동하는 경우 probs 없음. 하지만 이퀄 (0) 작동 방법을 잘 모르겠습니다. 100 자 이상의 문자열을 확인 했습니까? – ripu1581

+0

예, 예를 들면 180이었고 저장되었습니다. –