2012-12-29 3 views
0

나는 WordPress에서 다음 예제를 사용하려고합니다. 광고를 시작하고 300px의 페이지를 작성한 div가 있어야하며, 페이지가 맨 위에 도달 할 때까지 페이지를 스크롤 한 다음 사용자가 계속 진행할 때 거기에 머물러 있어야합니다. 아래로 스크롤합니다. 이 모든 것이 보인다, 작동해야 html 파일에 여기div가 페이지 상단에 도달 할 때까지 스크롤합니까?

http://jsfiddle.net/jPxEY/

,하지만 작동하지 않습니다 : 예는 이것을 설명한다 http://www.altesc.net/exmp.html

사실, 당신은 그가 바로 어린 아이를 보면 "비슷한 질문"상자에서 아래로 스크롤하면, 정확히 내가 한 것입니다.

나는 모든 것을 올바르게했다고 확신하지만 자바 스크립트가 작동하지 않는 것 같습니다. .

가에서 킥에 실패
<script src="http://code.jquery.com/jquery-1.7.1.js" type="text/javascript"> 

을 : 내가 JQuery와 모든 것을 복사 그냥 별도의 JS 파일의 헤더에 직접 추가하지 않으면 내가 이런 식으로 jQuery를 호출 할 때, 작동, 그것은 단지입니다

무엇이 잘못 되었습니까?

도와 내 헤더를 추가 :

<script type='text/javascript' src='http://www.altesc.net/wp-includes/js/jquery/jquery.js?ver=1.8.3'></script> 

<script type="text/javascript"> 
//<![CDATA[ 
$(window).load(function(){ 

$(document).scroll(function() { 

var useFixedSidebar = $(document).scrollTop() > 330; 
$('.adscrollleft').toggleClass('fixedSidebar', useFixedSidebar); 

}); 

});//]]> 
</script> 
+0

예제가 제대로 작동하는 것 같습니다. 정확히 무엇이 문제입니까? – David

+0

당신이 링크하고있는 파일의 맨 아래에'jQuery.noConflict();'Firefox의 Firebug JS 콘솔이나 Chrome JS 콘솔을 열면'$'는 함수가 아니라는 에러를 보게 될 것입니다 . 이제 간단히하기 위해 전역 범위에서'$()', * 특히 * 대신'jQuery()'를 사용하십시오. 다른 라이브러리도'$ '를 사용하므로'jQuery.noConflict()'가 존재합니다. –

+0

예를 들어, $ (window) .load (function()은 jQuery (window)가되어야합니다. (function()? 변경했습니다. 작동하지 않았습니다. 누군가 내 html을 볼 수 있다면 예를 들어 첫 번째 게시물을보고 작업을 수행 할 수 있는지 확인한 다음 수정 코드를 볼 수 있습니다. – Jim

답변

1

, 당신의 jQuery를이 파일이 매우 매우 하단에 을 가지고 포함은 jQuery.noConflict();에 대한 호출은 $ 속기 기능을 해제하는 jQuery()을 참조하십시오.

jQuery(window).load(function(){ 
    jQuery(document).scroll(function() { 
     var useFixedSidebar = jQuery(document).scrollTop() > 330; 
     jQuery('.adscrollleft').toggleClass('fixedSidebar', useFixedSidebar); 
    }); 
}); 

이제 코드가 작동합니다

그래서,이 문제를 해결하는 가장 솔직 방법이다. 여기에 내 컴퓨터에서 작동 파일의 페이스트 빈이야 (당신이 매우 큰 화면이있는 경우 브라우저 최대화 계속 안 주) :

http://pastebin.com/GCvaCF7c

어떤 사람들은 정말 $ 속기 같은,하지만, 당신 때문에 이 많이보기 :

//     >>> The $ below <<< 
jQuery(window).load(function($){ 
    $(document).scroll(function() { 
     var useFixedSidebar = $(document).scrollTop() > 330; 
     $('.adscrollleft').toggleClass('fixedSidebar', useFixedSidebar); 
    }); 
}); 

jQuery는 범위에서 사용할 수 있습니다. 이제는 언제든지 글로벌 범위에있는 jQUery()을 사용하여 익숙해 져야합니다.

+0

감사합니다. 테스트 할 때 사용하는 오프라인 버전에서 약간의 코드 오류가 있었지만 게시했을 때만 나타났습니다. 이제 작동합니다. 다시 한번 감사드립니다. – Jim

+0

나는 '$'와 다른 방식으로 범위를 지정했다. –

+0

나는 하나의 마지막 불만이 있다고 가정한다. 페이지 아래로 스크롤 할 때 새로 고침을 누르면 j가 다시 스크롤 할 때까지 튕겨지지 않습니다. 상자를 점프하고 어색하게 보입니다. 아무도 이것에 대해 어쨌든 알고 있나요? 당신은이 페이지의 절반 아래로 스크롤하여 잘못된 정렬을 보는 것이 무엇을 의미하는지 확인할 수 있습니다 : http://www.altesc.net/send-us-a-tip/ – Jim

0

몇 가지 문제가 여기에 :

  • 첫째, jQuery를의 로컬 복사본을 사용합니다.

    온라인 사본은 항상 유지되지만, 자신 만의 것이 가장 좋습니다. 그것을 다른 방식으로 생각하는 것 : jQuery 사이트가 다운 된 경우 어떻게해야합니까? "leeching"하고있는 스크립트 또한 중단 될 것이며, leekhed jQuery에 의존하는 스크립트를 실패하게 만들 것입니다.

    스크립트 제

  • 로드 라이브러리로드 순차적으로 (일부 비동기 물건 deferasync 또는 속성, 또는 종속 로더 같이 사용하지 않는 한)을 차례로 분석된다. 스 니펫이 jQuery에 의존하고 전에 jQuery 앞에로드 된 경우 오류가 발생합니다. 먼저 라이브러리 스크립트를로드 한 다음 나중에 의존하는 스크립트를로드하십시오.

    무슨 뜻인지의 빠른 비주얼

    :

    이 작업을 얻기 위해 시도 할 수있는 몇 가지가 있습니다
    <script src="jQuery.js"></script> 
    <script src="yourScriptThatDependsOnJQuery.js"></script> 
    <script> 
        //scripts that depend on jQuery 
    </script> 
    
+0

그냥 예일 뿐이므로 jquery가 로컬로 제공됩니다. 헤더가 순서대로 나열되어있을 수도 있습니다. 오류? '' ' // = $ (문서) .scrollTop()> 330; $ ('. adscrollleft'). toggleClass ('fixedSidebar', useFixedSidebar); }); }); //]]> ' – Jim

+0

CDN 호스팅 포함을 사용할 때 아무 문제가 없습니다. 그것에 대해 가려운 경우 Require.js와 같은 로딩 대체 스크립트 또는 라이브러리를 사용하십시오. 직접 호스팅하는 데는 문제가 없지만 CDN은 콘텐츠를 제공하는 데 상당히 숙련되어 있습니다. –

0

.

  1. 스크립트가 페이지에 들어갔습니다되어 있는지 확인이 확인하는 한 가지 방법은 크롬 디버거의 '소스'탭을 사용하고 HTML 헤드 섹션에서 다른 파일을 검색하는 것입니다

  2. jQuery를 포함시킨 후에 종속 스크립트를 포함 시켰는지 확인하십시오. 가장 의존적 인 스크립트입니다.

  3. jQuery가 제대로 포함되어 있는지 한 번만 확인하십시오.

  4. jQuery에 대한 조심해. $ 더 이상 jQuery를 별칭하지 않기 때문에 코드가 작동하지 않는, 그래서 $를 overridding되는 다른 라이브러리가있다. jQuery.noConflict()을 사용하면 같은 변수 $를 사용하는 페이지의 다른 라이브러리와의 충돌을 피할 수 있습니다.

+0

문제는 jsfiddle에서 예제를 사용하여 추가 스크립트없이 html 파일에 모든 것을 넣었지만 아직 작동하지 않습니다. – Jim

+0

@Jim - * 표시해야하는 것은 무엇입니까? 실제로 일하지 않습니다. 이 말이 무슨 의미인지, 이봐, 이봐,이게 효과가있다.하지만 다른 것을 고쳐서 내가 너에게 보여주지 않을거야. ? 세부. –

+0

만약 그렇다면 4 단계를 올바르게 따라 가면 올바르게 진행되어야합니다. 여기에 오류를 게시하는 경우. 어떻게 도와 드릴까요? – Techie

1

삭제이 : 나는 질문에서 내 댓글에 말했듯이 $(window).load(function(){

관련 문제