2013-06-09 2 views
0

조건과 트리거링에 약간 문제가 있습니다. 내 HTML (div 및 img)에 2 개의 개체가 있으며 JS에서 계속 정렬하려고합니다. 끊임없이 나는 창 크기가 변할 때, 그것들이 재배치된다는 것을 의미한다. (하나는 중심에 정렬되어 있기 때문에 - 그리고 아무 것도 아니다.), 두 번째 것을 또한 가운데 정렬 할 수 없다. 왜냐하면 나는 또한 크기를 맞추어야하기 때문이다. 확실히 JS가 필요합니다).JQuery 한 번만 실행하지 않는 조건을 만드는 방법.

나는 그들을 정렬하고 적절한 치수를 설정하는 작은 함수를 만들었고 모든 window.onresize 이벤트 (그리고 준비된 문서에서)에서 함수를 트리거하고 있습니다. 그러나 나는 줌 동작에 대해 트리거하지 않으며, 게다가 윈도우에 의존하지 않는 것이 더 적합하다는 것을 알았다.

그래서 나는

if (div.width() != img.widht()) { // do something to match it again }

같은 조건을 작성하는있는 posibility이있을 것이라고 생각하지만 그림이 있기 때문에 그것은 단지 준비 이벤트에이 조건을 (실행에 RESP.로드 이벤트를 밝혀). 그래서 제 질문은, 어떤 방법이 있다면, 그 상태가 그 상태를 단지 연속적으로 점검 할 것인가하는 것입니다. 나는 Interval이 그것을 처리하도록 설정할 수는 있지만, a) 모든 실행의 99 %가 무의미 할 것이라고 생각한다. b) 매우 빠른 반복을 좋아하지 않는다면, div의 img의 불일치 문제가 바로 발생합니다.

대단히 감사합니다.

+0

if (div.width()! = img.widht())'는 (if! div.width()! = img.width())' –

+0

이어야합니다. 관련 코드로 jsfiddle를 설정할 수 있습니까? –

+2

'resize' 이벤트에 바인딩하면 나에게 많은 도움이됩니다. 확대/축소에 대해서는 http://stackoverflow.com/q/995914/218196 및 http://stackoverflow.com/q/1713771/218196을 참조하십시오. –

답변

0

맞춤 이벤트를 직접 정의하고 맞춤 코드를 실행할 수 있지만 적절한 시간에 이벤트를 발생시킬 수있는 방법이 필요합니다. 이것은 프로그램의 일반적인 실행 흐름 (여기서는 옵션이 아님) 또는 기존 이벤트 중 하나에 대한 처리기에서만 발생할 수 있습니다. 트리거 조건이 발생할 때 해당 이벤트가 계속해서 발생하지 않으면 타이머가있는. 나는 이것에 틀림없이 행복 할 것이다, tho '.

setInterval 대신 requestAnimationFrame을 고려하십시오.

+0

고마워요. 나는 JS에 꽤 새로 왔습니다. 그래서 많은 지식을 가지고 있지 않습니다. 그래서 내 생각을하게하는 또 하나의 질문이 될 것입니다. JS 스크립트는 언제 트리거합니까? "준비,로드, 크기 조정"과 같은 것으로, 브라우저 기반으로 보이고 다음에 할당 된 이벤트에 의존하는 다른 그룹처럼 보입니다. "click, hover, ..."과 같은 HTML 객체는 이벤트 처리기입니까? 코드가 트리거되면 다른 인스턴스가 있습니까? –

+0

이벤트 처리기 (또는 수신기)는 이벤트 tr가 발생할 때 호출 될 콜백으로 전달 iggers : 귀하의 경우 이벤트 처리기는 이미지와 div를 알 수있는 코드를 포함해야합니다. MDN에는 표준 및 비표준 이벤트의 포괄적 인 목록이 있습니다. https://developer.mozilla.org/en-US/docs/Web/Reference/Events –

관련 문제