2010-08-17 8 views
2

(동적으로로드 페이지에서조차 링크) 그래서 난이어떻게 모든 링크를 동적으로 페이지를로드 할 수 있습니까?

<script type="text/javascript" 
      src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"> 
    </script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("a[href*='http://']:not([href*='"+location.hostname+"'])").attr("target","_blank"); 

     $("a[target!='_blank'][target!='_top']").click(function(){ 

     var url=$(this).attr("href")+'?jquery=1'; 
     ajaxpage(url,'actualcontent'); 

     window.location.hash=$(this).attr("href"); 
     return false; 
    }); 


}); 
    </script> 

같은 스크립트를 가지고 있고 그것을 잘 작동합니다. 그것은 내 모든 링크가 DIV 내에서 동적으로로드된다는 것을 의미합니다. 그러나 해당 div에로드 된 링크는 클릭 할 때 동적으로로드되지 않습니다. 이 스크립트를 포함 시키면 여전히 작동하지 않습니다. 그리고 비슷한 메모에 동적으로로드 된 페이지에서 자바 스크립트를 만드는 방법이 있습니까? 원본 헤더에 포함시키지 않고?

감사합니다.

답변

2

면책 조항 :, 당신은 jQuery를 1.3 jQuery를 1.4
(하지만, 많은 성능 개선 및 버그 수정 1.2.6 이후가한다)

로 업그레이드해야이 솔루션을 사용하려면

대신 .click()이처럼 여기 .live()를 사용할 수 있습니다

$("a[target!='_blank'][target!='_top']").live('click', function(){ 

.live()은 요소 자체에 대한 처리기가 아닌 document에 버블 링 click 이벤트를 수신하므로 동적으로 추가되는 요소에서도 작동합니다.

+0

? 이 스크립트는 새로로드 된 페이지에 포함되어야합니까? – Tom

+0

@Tom - Nope, 메인 페이지에서 ... .live()가없는 jQuery 1.2.6을 사용하고 있다고 말했듯이, .live()를 사용하도록 업그레이드해야합니다. –

+2

live() 함수가하는 일을 설명하는 것이 유용합니다. 설명서에서 : "현재 셀렉터와 현재 또는 미래에 일치하는 모든 요소에 대한 이벤트에 핸들러 부착". 이것은 현재의 모든 하이퍼 링크에만 첨부되기 때문에 click() 함수와 다릅니다. – Marc

2

문제점이 확실하지 않습니다. 이 함수 다음에 추가 된 링크가이 함수를 사용하지 않는다고 말하는 것입니까? 힌트, 해당 div의 링크를 업데이트하기 위해 페이지를 다시 스캔해야합니다. 그렇지 않으면 피할 수 있으며 live()을 사용하십시오.

0

사용 .delegate()

// Don't need to put this in a $(document).ready() callback. 
$(document).delegate("a[target!='_blank'][target!='_top']", "click", function(e){ 
    var url=$(this).attr("href")+'?jquery=1'; 
    ajaxpage(url,'actualcontent'); 
    window.location.hash=$(this).attr("href"); 
    e.preventDefault(); 
    return false; 
}); 

$(document).delegate("a[href*='http://']:not([href*='"+location.hostname+"'])", "click", function(){ 
    // lazy attr setting, reduces query cost 
    $(this).attr("target", "_blank") 
}); 
나는 여전히 같은 문제를 갖고있는 것 같다
관련 문제