2011-05-01 3 views
2

URL을 변경하려고합니다. Google에서 가끔 내 Google 검색 habbits (sigh 야후의 악마로 사용되는)에 대해 집에 전화하기를 좋아하기 때문에 Google 검색에서 돌아옵니다. : S 올바른 jquery 인 것으로 보이는 오류가 발생했습니다. 수정 사항이 궁금합니다. (I 크롬의 V8에이기 때문에, 비밀)jquery가있는 많은 링크에서 href가 변경되었습니다.

오류 코드는 다음과 같습니다

$("a[href^='http://www.google.com/url'], a[href^='www.google.com/url'], a[href^='/url?'], a[href^='url?']").each(
function(a) { 
    var url = ""; 
    $(a).attr("href").split("&").each(function (part) { 
     if (part.match(/^url\=/)) { 
      url = unescape((part.split("=",2))[1]); 
     } 
    }); 
    $(a).attr("href", url); 
}); 

나는 점점 오전 오류가에 있는지 확인한 다음은 TypeError: Cannot call method 'split' of undefined

소스입니다 첫 번째 분할은 부분 매개 변수가 아닙니다.

+0

문자열의 각 'a'요소에 대해 호출하는'function (a)'에서'$ (a)'가 아닌'$ (this)'를 사용하려고 시도 했습니까? – Cipi

+0

jQuery 객체를 제외한 다른 객체에서'.each()'메소드를 사용하지 않아도된다. 그리고'split()'에 의해 반환 된 배열은 그러한 객체가 아닙니다. '$ .each ($ (a) .attr ('href'). split ('&'), function (i, part) {...}); 대신에. – ThiefMaster

+0

@ThiefMaster - 반복을 위해서'for ... splits.length'를 사용해야합니다 : P 역시 잊었습니다. –

답변

1

사용하고있는 콜백 함수의 첫 번째 인수가 실제로 each()에 사용되는 배열의 인덱스입니다. 이것을 시도해보십시오 :

$("a[href^='http://www.google.com/url'], a[href^='www.google.com/url'], a[href^='/url?'], a[href^='url?']").each(
function() { 
    var url = ""; 
    $(this).attr("href").split("&").each(function (part) { 
     if (part.match(/^url\=/)) { 
      url = unescape((part.split("=",2))[1]); 
     } 
    }); 
    $(this).attr("href", url); 
}); 
+0

맙소사 :) 감사합니다. –

1

each 콜백 (a)의 첫 번째 매개 변수는 색인이며 요소가 아닙니다.

대신 each

, 당신은 attr에 콜백을 통과해야합니다

$("a[...]").attr("href", function(index, oldValue) { 
    return something; 
}); 
+0

담당자가 있으면 투표 할 수 있습니다 : D 인덱스이고 내부입니다. 개체 메서드 그래서 ** **이 매개 변수 설정없이 ** 사용할 수 있습니다. –