2012-01-24 3 views
2

나는 hijaxing을 위해 다음 jquery를 사용합니다. 그것은 대부분의 링크가 하이재킹을 원하지만, "nohijax"클래스를 가짐으로써 "옵트 아웃"하지 않는 사람들을 허용한다는 점에서 매우 깔끔합니다. 가끔씩 실패하는 이유는 무엇입니까?좋은 hijax가 가끔 실패합니다

$("#content a:not(.nohijax), #footer a:not(.nohijax)").live("click", function() { 
    $.get($(this).attr("href"), function (response) { 
     $("#content").replaceWith($("#content", response));    
    }); 
    return false; 
}); 

그것은 내 컴퓨터에서 IE9에서 크롬 100 %, 100 % 작동하지만 다른 컴퓨터에서 IE에서 자주 실패합니다. 실패는 일관성이 없습니다. "실패한"컴퓨터 일지라도 대부분의 경우 하이재킹이 작동하지만 갑자기 클릭 한 링크는 이전 내용이 새로운 내용으로 대체되지 않으므로 "아무 것도하지 않는"것처럼 보입니다. '새 탭에서 열기'는 항상 작동하여 새 콘텐츠가 실제로 전송되었음을 나타냅니다.

여기에서 문제를 조사하려고했습니다. 하나는 .lot()을 사용하여 .not()을 사용할 때 조심해야하지만, 나는 그것이 옳다고 믿는다. 또한 대체 된 요소 (여기서는 id가 "content"인 div)는 본문 요소의 직접 하위 요소가 아니어야합니다. 그것은 (중간에 다른 div가 있음) 아닙니다.

명백한 하울러가없는 경우 어떻게 진행되고 있는지 추적 할 수 있습니까? (나는 자바 스크립트와 브라우저 개발에 익숙하지 않다.) 고맙습니다.

답변

1

사용하기 좋은 console.log(); 어떤 데이터를 반환하는지 확인하십시오. 예를 들어, console.log (응답)는 브라우저의 dev 도구 콘솔에 데이터를 표시합니다.

ex.

$("#content a:not(.nohijax), #footer a:not(.nohijax)").live("click", function() { 
    $.get($(this).attr("href"), function (response) { 

     console.log(response); 

     $("#content").replaceWith($("#content", response));    
    }); 
    return false; 
}); 

.live 기능이 작동하지 않는 경우 IE 8 이하 버전에서이 기능을 사용할 수 있습니다. 사용하려는 html 앵커가 페이지로드 후에 채워지지 않는 한 .click()을 사용하는 것이 좋습니다. 대신)는 당신이 .delegate를 (사용하는 것이 좋습니다 1.7을 사용하지 않는 경우

당신은 최신 JQuery와 1.7 .live() 메소드가 사용되지 않습니다를 사용하지만, 경우. http://api.jquery.com/live/

+1

덕분에, 그것은 바른 길에 나를 넣어 가지고 있는데 짓을했는지 .live() 대신 .on()을 사용하는 약간의 테스트. jQuery 1.7에서이를 대체합니다. 멋지게 작동하지만 원래 컨텍스트에서 다시 확인할 시간이 없었습니다. 문제가 해결되었는지 여부를 다시 알려 드리겠습니다. console.log 팁도 가져 주셔서 감사합니다. 죄송합니다. 아직 답변을 드리지 못했습니다. – EyeNine

0

이것은 내가 these techniques 중 하나로 해결 한 캐시 문제인 것으로 보입니다.

console.log를 사용했는데 신선한 콘텐츠가 이전 콘텐츠와 동일하다는 것을 알았습니다. 브라우저 캐시를 지운 후 하이킹이 작동했습니다. 그런 말로 Chrome에서 결코 잘못되지는 않았으며 캐시 된 콘텐츠가 요청 된 URL과 일치하는 것으로 IE에서 생각한 것을 볼 수 없습니다. 어쨌든 이제는 작동합니다.

는 여기 유용 내 스크립트 JQuery와 1.7 CSTE 연구진()를 사용하여 업데이트되는 경우

: 당신의 빠른 응답 앙드레 대한

$(document).on("click", "#content a:not(.nohijax), #footer a:not(.nohijax)", function() { 
    $.get($(this).attr("href"), function (response) { 
     $("#content").replaceWith($("#content", response)); }); 
    return false; }); 
+0

뛰어난 외모 –

관련 문제