2009-04-28 2 views
1

I've been having a lot of problems with jQuery 1.3.2 내 사이트 중 하나에 있습니다. 그것은 Joomla 사이트이므로 Mootools도 페이지에 포함되어 있습니다 (Mootools를 제거하는 것은 너무 어렵습니다). 기본적으로 문제는 하나의 선택기 (예 : "a", ".myClass", 이 아닌"html a", ".myClass td"이 아님)로 기본 jQuery 선택기를 호출하면 첫 번째 요소 만 반환된다는 것입니다.makeArray 함수를 Sizzle (jQuery 1.3)

나는 코드를 밟아야하고, 지글 지글 엔진에서이 기능을 좁혀 :
(직접보고, 라인 2058 jquery.js)

var makeArray = function(array, results) { 
    array = Array.prototype.slice.call(array); 
    if (results) { 
     results.push.apply(results, array); 
     return results; 
    } 
    return array; 
}; 

내가 그것을 쓸 것이다 여기에 다시 의견 jQuery("a")를 호출 한 후 내가 로그인 봤는데 값을 표시합니다 :

var makeArray = function(array, results) { 
    // "array" is an array of all the 58 links on the page 
    // "results" is an empty jQuery object 

    array = Array.prototype.slice.call(array); 

    // array is unchanged. 

    if (results) { // true 
     results.push.apply(results, array); 
     // "results" is now an array only holding the FIRST element. 
     return results; 
    } 
    return array; 
}; 

누군가 나에게이 코드를 설명 할 수 있습니까? 또한 왜 내 요소 중 하나를 제외한 모든 요소를 ​​제거합니까?

답변

6

Aaargh, 드디어 찾았습니다. 이전 버전의 Validation plugin을 사용하여 jQuery 1.3+과 호환되지 않습니다.이 메서드는 배열에 첫 번째 요소를 푸시하는 고유 한 push 메서드를 정의했으며이 메서드는 일반 jQuery 메서드 대신 호출되었습니다.

업그레이드 후 이상한 물건을 경험 한 모든 사용자에게 다음과 같이 경고합니다. 플러그인의 호환성을 확인하십시오 !!

+1

Google에 알려 주셔서 감사합니다. –