2011-01-26 4 views
1

저는 약간의 jQuery 원숭이가 있는데, 별도의 창에서 rel = "external"로 링크를 여는 간단한 함수를 사용해야하는 사이트가 제게 떨어졌습니다. jQuery를에jQuery 함수의 프로토 타입 재 작성

나는이 같은 수행

// make links with rel=external open in new window/tab 
$(function() { 
    $('a[rel*=external]').click(function() { 
     window.open(this.href); 
     return false; 
    }); 
}); 

가 어떻게 프로토 타입에서 동일한 기능을 설정합니다 외부 그들에 부착 = 확인해있는 모든 링크를 눈에 띄지 않게 트리거 될?

감사

사이먼

편집 : 최종 코드 아래 세 가지 답변의 조언에 따라

은 다음과 같습니다

$(document).on('dom:loaded', function() { 
    $$('a[rel*=external]').invoke('on','click', function(event) { 
     window.open(this.href); 
     event.stop(); 
    }); 
}); 

모두 감사합니다!

답변

5
Event.observe(window, 'load', function() { 
    $$('a[rel*=external]').each(function(item) { 
     $(item).observe('click', function(event) { 
      window.open(this.href); 
      event.stop(); 
     }); 
    }); 
}); 

here's a demo.

+3

$ (item) .observe 대신 "Event.observe (window, 'load') 및 $ (item) .on 대신"$ (document) .on ('dom : loaded' 새로운 1.7 구문) –

+1

@Stefaan, nice. 나는'on'의 도입을 잊어 버렸습니다. 또한'.each'를'.invoke ('on', 'click', function (event) ...)로 줄일 수 있습니다. ' – clockworkgeek