2014-11-07 3 views
0

나는 equal-heights.js라는 스크립트를 가지고 있는데,이 스크립트는 underscore.js와 함께 작동합니다. div를 애니메이션 (선택 사항)이있는 최상위 div의 크기와 동일하게 만듭니다. 문제는 페이지를 충전 할 때 아무 일도 일어나지 않는다는 것입니다. 브라우저의 크기를 조정할 때만 div가 균등화되기 시작합니다.div 같은 높이의 애니메이션을 문서에 준비하십시오.

html로의 초기화하는 코드 : 페이지가로드, 애니메이션이 시작할 때 http://webdesign.igorlaszlo.com/templates/js/blogger-equal-heights-responsive.js

어떻게해야 무엇을 동일하게하는 것을 : 당신은 여기에 동일한-heights.js 볼 수 있습니다

$(document).ready(function() { 

    $('.profile-panel').equalHeights({ 
     responsive:true, 
     animate:true, 
     animateSpeed:500 
    }); 

}); 

divs가 자동으로?

+0

이 좋은 것, 당신이 잘못하고 될 수 있습니다 무엇을 이런 식으로 얘기하기 어렵다 ... 추천 http://jsfiddle.net/ – webeno

+0

은 어쩌면에 대한 도움 당신, 이것은 js의 데모 페이지입니다 : http://optdesign.co.uk/equal-heights-responsive/ –

+0

괜찮지 만, 나는 당신의 상황에 좀 더 구체적으로 당신의 케이스를 모델링하려고합니다. .. 위의 예제는 작동하는 방법을 보여 주지만 왜 내가 당신을 위해 작동하지 않는지 알려주지 않을 것입니다 ... – webeno

답변

2

필자 만의 테스트를 만들었고 플러그인 작성 방법에 문제가 있다는 것을 깨달았습니다. 즉, 클래스 이름에 대해 하나의 값만 허용합니다. 그렇지 않으면 중단됩니다.

때문에 스크립트에 다음 줄입니다 :

className = '.'+$(this).prop('class'); 

이것이하는 일은 그것이 당신의 요소의 class 속성을 취하고 앞에 점 (.)를 추가하는 것입니다; 여러 클래스 이름이있는 경우, 그것은 단지 첫 번째 앞에 점을 넣어 때문에 그래서 만약 당신이, 현재의 선택을 받고 매우 확장 성이 좋은하지만 방법 ...

<div class="profile-panel profile-panel-1st-row profile-panel1"> 

.. .

$('.profile-panel profile-panel-1st-row profile-panel1') 
... 이렇게 나머지 클래스에서는 점이 누락되어 제대로 작동하지 않습니다.

버전 1.7까지는 jQuery가 .selector 속성을 가졌지 만 이제는 더 이상 사용되지 않습니다. 대신 그들은 지금 (내가 상황에 맞게) 다음과 같이 플러그인의 함수의 인수로 선택기를 추가 할 제안하고 있습니다 :

$('.profile-panel-1st-row').equalHeights({ 
     selector:'.profile-panel-1st-row', 
     // ... 
    }); 
:

먼저이 함수를 호출 할 때 옵션이 selector라고 정의

그런 설정은 플러그인 내부의 className 변수는 다음과 같이

var className = options.selector; 

당신이 할 수있는 또 다른 것은 당신이 우리에게 원하는 각 요소에 대해 처음으로 플러그인을 활성화하는 데 사용하는 클래스 장소입니다 ... 이렇게 ... ... 그래서 대신에

<div class="profile-panel-1st-row profile-panel profile-panel1"> 

<div class="profile-panel profile-panel-1st-row profile-panel1"> 

그것을 전자 ... 당신은 설정 플러그인 내부의 className 변수는 다음과 수 :

기본적으로 클래스 이름을 공백으로 나눈 부분으로 나누고 첫 번째 것을 취합니다.

이 두 솔루션의 최고가하려면 다음과 className 설정 : 애니메이션에 관해서는

var className = options.selector || '.'+ $(this).prop('class').split(" ").slice(0,1); 

, 단지 크기 조정 작동을; 그 그 내가 jsfiddle에 추가하는 플러그인이 내장 된 방법, 당신은 플러그인 작성자의 원래의 예를 함께 놀러 수있어, 의도 : http://jsfiddle.net/o9rjvq8j/1/

편집 # 2 : 당신은 플러그인을 변경 행복 경우 심지어는 if(settings.responsive === true) 수표에서 $(window).resize(function()을 삭제하면 제대로 작동합니다.)이 설치 작업 예/데모를 할 수 있다면

if(settings.responsive === true) { 
    //reset height to auto 
    $(className).css("height","auto"); 
    //re initialise 
    reInit(); 
} 
+0

위대한, 감사합니다! 3 행은 이제 작동하지만 초기 질문이 여전히 있습니다. 브라우저의 크기를 조정하지 않고 페이지로드시 애니메이션을 어떻게 작동시킬 수 있습니까? :) –

+0

나는 또 다른 문제도 인식했다 : 나의 마지막 패널은 첫 번째 브라우저의 크기를 재조정하지만 브라우저 화면의 크기를 계속 조정하면 같은 높이로 유지된다. 나는 다시 화면으로 돌아갈 것이라고 생각한다 : 이 플러그인은 나쁘지는 않지만 아직 사용할 준비가되지 않았습니다 ... –

+0

checkout 내 대답의 맨 아래에 제 편집; 나는 그것이 당신의 초기 질문에 대한 대답이라고 생각한다;) – webeno