2014-09-01 2 views
1

어떻게 jQuery 메서드에 기능을 추가 할 수 있습니까? 요소에 (<a> 또는 <p> 또는 뭔가 다른) hide를 사용하는 경우 예를 들어, : 나는 플러그인의 유형을 만드는 시도어떻게 jQuery 메서드에 기능을 추가 할 수 있습니까?

HTML

<a href="#">click me</a> 

jQuery를

$("a").hide() 

을,하지만 난 원하는 네이티브 기능을 유지하고 더 많은 것을 추가하십시오.

jQuery.fn.extend({ 
    hide: function() { 
     alert("hidden element: " + $(this)); 
    } 
}); 

답변

4

가장 쉬운 방법은 물론 다른 이름을 지정하는 것입니다. 당신이 정말로 그렇게하지 않으려면 다음 두 this을 통과하고는 Function.prototype.apply를 사용하여 인수를 받아, 원래의 방법에 대한 참조를 유지할 수 있습니다 :

var originalHide = jQuery.fn.hide; 

jQuery.fn.hide = function() { 
    alert('hidden element: ' + this); // == $(this); neither is meaningful 
    return originalHide.apply(this, arguments); 
}; 
+0

+1 : 나보다 더 빠른 것에 대해. 나는 또한 동일한 변수 이름 xD에 대해 생각했다. –

+0

"originalHide"전역 변수를 사용하지 않으려면 최소한 리팩터링해야한다. – plalx

+0

@plalx : 누가 이것이 이것이 글로벌 범위라고 말 했나요? 나는 짧은 스 니펫에 필요한 여분의 IIFE를 찾지 못한다 ... – Ryan

관련 문제