2013-06-19 2 views
0

이 문제를 해결할 수 있습니까?jQuery - .load에 포함 된 selector를 참조하십시오.

"뉴스"를 표시하는 로컬 웹 사이트가 있습니다. 최신 하나는 페이지가 처음로드 될 때 표시되지만 이전 뉴스는 방문자가 링크라는 #oldnews 클릭 할 경우에만로드됩니다 후로드,

$('#oldnews').load('ajax/older_news.php'); 

은 "older_news.php"파일을 다른있다 이러한 오래된 뉴스를 숨길 링크입니다. 그러나이 링크는 작동하지 않습니다.

이 "숨기기"메커니즘을 처리하는 jQuery 코드는 홈페이지에 있으므로 jQuery는 링크가 존재하지 않는다는 이유로 jQuery가 뉴스를 숨기지 않는다고 생각합니다. 링크를 클릭).

이 문제를 해결하기위한 더 나은 방법에 대한 통찰력이 있으십니까? 고맙습니다.

+4

당신은 동적으로 추가 컨텐츠,'$ (문서)를 처리하는 이벤트 위임이 필요합니다 따라서 당신이 뭔가를 할 수 있습니다. ('클릭', '#idOfLink', function() {// 할 일}), ' – tymeJV

+0

우리는 더 많은 코드. – Alvaro

+1

원래 jQuery 코드가 실행될 때 요소가 존재하지 않기 때문에 바인딩이 발생하지 않는다는 가정하에 올바른 것입니다. old_news.php에서 오는 관련 링크 마크 업을 게시하면 DOM에 추가 될 때 짝수를 요소에 바인딩하는'on()'문을 쓸 수 있습니다. –

답변

2

2 가지. 덧글에서 지적했듯이 .delegate을 사용할 수 있습니다. 새로운 버전의 jQuery (1.7 이상)에서는 매우 간단합니다.

$(function() { // good old $(document).load(function(){ //shorter! 
    // use document to asign delegation 
    //  asign an event like "click" or "keyup" 
    //   asign a selector like "#elementID" or ".element-class-name" or even just "ul li" 
    $(document).on("event", "selector", function(e) { 
     /* DO WORK 
       like any other event callback 
     */ 
    }) 

    // for older versions of jQuery, use .delegate or .bind 
    $(document).delegate("event", "selector", function(e) { }) 
}) 

그러나, .load에도 콜백 기능이 있습니다.

$(function() { 
    $('#oldnews').load('ajax/older_news.php', function(response, status, jqXHR) { 
     $(".new-stuff:visible").hide(); 
    }); 
}) 
+0

감사합니다. 모든 의견에 따라 무엇을해야하는지 이해하면 알게 될 것입니다. 이 웹 사이트는 다음과 같습니다. http://www.scopiomagazine.com/ (여러 섹션이 있으며, 대부분이 작동하는 "이전"스위치를 가지고 있으며 외부 파일을로드합니다. 차례로 "숨기기"스위치가 있습니다. 스위치가 작동하지 않습니다.) – BMM

+0

해결책 주셔서 감사합니다! 해결 됐어. – BMM

관련 문제