2011-07-27 3 views
1

jquery와 간단한 탐색 메뉴를 사용하여 내부 내용을로드하는 페이지가 있습니다. 이 때문에 페이지에는 정기적으로 액세스되는 URL이 하나뿐입니다. 내 문제는로드 된 div 내에서 콘텐츠를 가져 와서 특정 div를 수정하지 못하는 것입니다. 예를 들어 내 JQuery와 로더 함수로이의 라인을 따라 뭔가를 :이미로드 된 후 jquery가있는 div 요소로로드

$(document).ready(function(){ 

// load index page when the page loads 
$("#response").load("start.html"); 
$("#home").click(function(){ 
// load home page on click 
    $('#response').load('start.html', function() { 
     resizefunc(); 
    }); 
}); 
... 

내가 그 로더 기능에서 ID로 #에 연결하는로드 페이지 중 하나에서 요소를 작성하는 경우, 단순히 이동을 클릭 내 "응답"div를 다시로드하는 대신 페이지 상단으로 다시 집중하십시오.

답변

1

이러한 탐색 요소 (즉, #home)는 처음에는 존재하지 않으므로 해당 이벤트를 ready에 바인딩하면 좋지 않습니다. live 동일한 이벤트를 바인딩해야하거나 상위 요소에서 해당 이벤트를 delegate해야합니다.

은 쉽게 간단한 테스트를 수행하여 전시 할 수 있습니다

alert($("#home").length); 

0


이 솔루션을 사용해보십시오 알려드립니다 대신

$(document).ready(function(){ 
    $("#response").load("start.html"); 
    $("#home").live("click", function(){ 
     $('#response').load('start.html', function() { 
      resizefunc(); 
     }); 
    }); 
}); 

또는

$(document).ready(function(){ 
    $("#response").load("start.html"); 
    $("#response").delegate("#home", "click", function(){ 
     $('#response').load('start.html', function() { 
      resizefunc(); 
     }); 
    }); 
}); 

live 또는 delegate을 사용하면이 선택기를 일반적인 클릭 이벤트가 아닌 클릭으로 바인딩하면 현재 존재하고 미래에 존재할 수있는 선택된 모든 요소에 대해 할당 된 기능이 존재할 수 있습니다.

+0

이것은 내가 찾고있는 것입니다. 빠른 응답을 주셔서 감사합니다 ... 너무 빨리 나와 정답으로 선택하십시오. 5 분 안에 수표를 줄거야. –

관련 문제