2012-10-30 2 views
2

나는 pie6 (iecss3pie.com/) 라이브러리를 사용하여 ie6 +에서 css3을 사용할 수 있습니다. 나는 document.ready에 pie.js을 적용OnSubtreeModified 내 기능 추가

$(document).ready(function(){ 
     if (window.PIE) { 
      $('.vexClass, #vexId').each(function(){ 
       PIE.attach(this); 
      }); 
     } 

    }); 

내 문제는 DOM은 내가 pie.js을 적용 내 기능을로드해야하므로 pie.js이 잘 표현되지 않습니다 적용이되는 요소를 수정 된 것입니다 내 요소에 DOM을 수정할 때만 OnSubtreeModified 또는 다른 기술을 사용하여 수정 된 섹션에 대한 ... 예를 들어 DOM을로드 할 때 표시되는 패널이 있습니다.이 패널에는 다른 패널을 확장하는 단추가 있습니다. 버튼 및 pie.js를 적용하고자하는 다른 요소들, 그래서 메인 패널에서 pie.js를 적용한 모든 요소는 괜찮아 보이지만 확장 패널의 요소 인 pie.js는 적용되지 않습니다 : | 그래서 DOM을 확장 패널로 수정했을 때 pie.js를 삽입 할 수 있습니까?

감사합니다.

+0

.htc 파일이 아닌 pie.js를 사용해야합니까? –

답변

1

당신이 할 수있는 유일한 방법 개찰구 사용하는 경우는 Ajax 요청이 파이가 적용됩니다 완료되면, 프로젝트의 모든 시간이 추가 Wicket.Ajax.registerPostCallHandler 하는 것입니다.

window.document.ready = function() { 
    Wicket.Ajax.registerPostCallHandler(pieStarter); 
} 
function pieStarter() { 

    if (window.PIE) { 
     go(); 
    } 
} 
function go() { 
    $(''.vexClass, #vexId'').each(function() { 
     PIE.attach(this); 
    }); 
} 
1

Ajax 통화에서 데이터를 가져 왔습니까? 그렇다면 콜백에 파이를 추가해야합니다. 주어진 시간에 가지고 있지 않은 것에 무언가를 추가 할 가능성은 없습니다 (적어도 afaik).
파이를 콜백에 추가해야하는 경우 별도의 함수를 만들어야합니다. 함수에 dom 노드를 줄 수 있고 파이가 적용되면 모든 자식 노드를 검사하고 그렇지 않으면 검사를 수행합니다.

+0

wicket을 사용하여 아약스 호출이 개찰과 함께 제공되므로 콜백에 추가 할 수 없습니다. – RulerNature

+0

지금은 wicket을 사용하지 않지만 서버에서 데이터를 가져 오는 한 항상 데이터를 제대로 처리 할 수있는 JS 콜백이 있습니다. 적어도 이렇게 할 수있는 JS 함수를 설정한다면 .... – Shimu

+0

아약스 전화를 할 때 onreadystatechange와 같은 것을 사용하고 싶습니다. :) – RulerNature

1

타겟팅중인 IE의 이전 버전이이 기능을 지원하지 않기 때문에 DOMSubtreeModified 이벤트를 사용할 수 없습니다. 당신은, 그러나,이 스크립트와 함께이 대답 Detect changes in the DOM를 사용하여이 문제를 해결할 수 있습니다

$(document).ready(function() { 

    function applyPIE() { 
     if (window.PIE) { 
      $('.vexClass, #vexId').not('[data-pie=attached]').each(function(){ 
       PIE.attach(this); 
       $(this).attr('data-pie', 'attached'); 
      }); 
     } 
    } 

    onDomChange(function(){ 
     alert('document updated, applying PIE now'); 
     applyPIE(); 
    }); 

    $('#link').click(function() {   
     $('body').append('<h4>added content</h4>'); 
    }); 

    applyPIE(); 

}); 

그것은 준비와 DOM이 변화 할 때마다 문서에 호출되는 지역 기능 applyPIE() 생성 - 이미 처리 요소를 필터링합니다. 원하는대로 .vexClass, #vexId 선택 자 세트를 확장 할 수 있습니다.

JSFiddle : http://jsfiddle.net/hongaar/y3FaM/1/

+0

@ burebistaruler의 대답이 문제에 대한 더 나은 해결책을 제시 할 수 있습니다. –