2013-10-10 3 views
0

누군가이 코드 조각에있는 .Slice의 목적을 설명해 주시겠습니까? 패딩 하단의 하위 집합을 어떻게 선택할 수 있습니까? 고마워.jQuery .Slice clarification

$(this).bind('click', function(){ 
     var tid = $(this).attr('id'); 
     tid = tid.replace('play-button-', ''); 
     playheight = parseInt($('#play-view-' + tid, 10).height()); 
     playpadding = parseInt($('#play-view-' + tid, 10).css('padding-bottom').slice(0, -2)); 
     var flex_height = playheight + playpadding; 
     setTimeout(function(){ 
     $('.flex-viewport').animate({height: flex_height}); 
     },200); 
    }); 

은 --- 문자열에 슬라이스를 사용하지 않고 대체 ----

$(this).bind('click', function(){ 
     var tid = $(this).attr('id'); 
     tid = tid.replace('playlist-button-', ''); 
     playheight = $('#playlist-display-' + tid).height(); 
     playheight = parseInt(playheight, 10); 
     playpadding = ('#playlist-display-' + tid); 
     playpadding = $(playpadding).css('padding-bottom'); 
     if (playpadding != null) { 
     playpadding = parseInt(playpadding, 10); 
     flex_height = playheight + playpadding; 
     } else { 
     flex_height = playheight; 
     } 
     setTimeout(function(){ 
     $('.flex-viewport').animate({height: flex_height}); 
     },200); 
    }); 

답변

1

슬라이스 문자열을 받아 돌려줍니다.

이 경우 패딩 값을 가져와 마지막 두 문자 (예 : px 또는 em)를 제거하므로 ParseInt는 문자열을 정수로 구문 분석 할 수 있습니다.

'10px'.slice(0,-2) 당신은 문자열 기능에서 약간의 차이를 this answer를 확인하실 수 있습니다 '10'

를 반환합니다

+0

아 좋아. 그건 의미가 있습니다. 그것을 제외하고는 정수 자체가 아닌 모든 것을 제거합니다. 이 코드는 실제로 작동하지 않으며 슬라이스와 관련이 있다고 생각했습니다. 그래서 나는 그 문제를 해결할 수있는 일을 포함시키기 위해 나의 질문을 편집했다. 거기에 슬라이스를 사용하면 어떤 이점이 있습니까? – maskedjellybean

+1

예 parseInt가 그렇게합니다. 그것은 숫자가 아닌 문자 앞에있는 숫자를 파싱 할 것이므로 그 문자가 없어도 괜찮을 것입니다. 이 경우 슬라이스가 사용 된 이유는 말할 수 없습니다. 어쩌면 일부 클라이언트 브라우저가 동일한 방식으로 parseInt를 구현하지 못했을 때 예방 조치로 포함되었을 수도 있습니다. – becquerel