2010-04-30 3 views
7

지금까지 document.ready 함수 내에서 모든 jquery 코드를 삭제했습니다. 나는 특정 상황에 대해 이것이 최선의 방법이 아니라고 생각하고 있습니다.특정 페이지에서만 jquery 효과/연산 수행

예를 들면 : 특정 페이지가로드 될 때 애니메이션을 수행하려면 가장 좋은 방법은 무엇입니까?

$(document).ready(function() { 
    $("#element_1").fadeIn(); 
    $("#element_2").delay('100').fadeIn(); 
    $("#element_3").delay('200').fadeIn(); 
}); 

이 잘 document.ready 모든 후마다 는 각 라인을 확인하고 해당 요소를 찾을 것 페이지가로드의 내부합니다. jquery가이 문제를 피하기 위해 특정 페이지에서만 코드 덩어리를 수행하도록 지시하는 가장 좋은 방법은 무엇입니까? 확인하여

답변

10

elememt 전에 @numediaweb하는 애니메이션을

if ($("#element-1").length) { 
    $("#element-1").fadeIn(); 
} 

등 다른 요소 #element_2#element_3


실행 페이지에 존재하는 경우 :

전류 jQuery를 is() 구현 다음과 같습니다.

is: function(selector) { 
    return !!selector && jQuery.filter(selector, this).length > 0; 
}, 

그래서, is()를 사용하는 스마트 될 수 있지만 document.getElementById().length

+1

그래서 난 그냥 각 페이지의 body 요소에 대한 고유 ID를 가질 수 반복을 피하기하고 그것은 예를 들어 가시고 완전히 피할 것 그것이 있는지 확인하십시오! – Galen

+0

네가 맞습니다! –

+0

더 나은 방법은 [body 태그에 클래스 속성 설정] (http://stackoverflow.com/questions/9578348/best-way-to-execute-js-only-on-specific-page/9578898#9578898)입니다.) – numediaweb

0

가 만 DOM가 준비 때 실행되는 원하는 코드를 포함 고소 더 빠른 단지 length 등을 사용하는 것이 더 빠르다 특정 페이지. $(document).ready(...은 각 페이지에서 동일한 코드 덩어리를 실행해야한다는 의미는 아닙니다. 그것은 무엇이 실행되어야 하는지를 알기 위해 다양한 점검을 수행 할 필요가 있습니다.

페이지마다 특정 기능뿐 아니라 각 페이지에서 실행하려는 공통 기능이 몇 가지 있습니다. 이 경우 공통 함수를 단일 함수에 넣고 $(document).ready(...에서 호출하여 나머지 코드 만 해당 특정 페이지에만 적용되도록 할 수 있습니다. 예를 들면 다음과 같습니다.

function common() { 
    alert('hello'); 
} 

$(document).ready(function() { 
    common(); 
    // do some page-specific stuff 
}); 

모든 단일 페이지에서 다양한 검사를 수행하므로 코드가 어디에 있는지 알 수 없습니다.

function doAnimation() { 
    $("#element_1").fadeIn(); 
    $("#element_2").delay('100').fadeIn(); 
    $("#element_3").delay('200').fadeIn(); 
} 

$(document).ready(function() { 
    if(window.location.href == 'http://example.com/foo') { 
     doAnimation(); 
    } 
    if(this page has blah) { 
     doBlah(); 
    } 
}); 

이상적으로, 그것이 무엇 해야하는 것은 :

$(document).ready(function() { 
    // do stuff for foo.php 
}); 
+0

각 페이지마다 다른 js 파일을 사용 하시겠습니까? – Galen

+0

@ 갈렌 - 그래, 다소. 나는 당신이 필요로하는 곳에서만 코드를 사용하도록 권장하고있다. – karim79

관련 문제