2012-10-25 2 views
4

_trigger 메서드를 사용하여 이벤트를 발생 시키면 계속 걸리는 걸림돌을 때리지 만 올바르게 파악하지 못합니다.jQuery 위젯 팩토리 _trigger 인스턴스

기본적으로 내 위젯 인스턴스가 두 개 이상있는 경우 동일한 페이지에서 인스턴스화 할 마지막 위젯이 다른 모든 위젯보다 우선합니다.

내가 배운 성공적 인스턴스에 고유 한 개체를 만드는 $ .extend을 사용하지만, 나는 다음과 같은 문제에 접근하는 방법에 난처한 해요했습니다이 가능 그래서

가 어떻게 제대로 _trigger 방법을 사용하기를 인스턴스별로 여기

(function($) { 
    $.widget("a07.BearCal", { 
    options: { }, 
    _create: function() { 
     _this = this; 
     this.element.click(function() { 
      _this._trigger("testTrig"); 
     }); 
    }, 
    }); 
})(jQuery); 

// Instantiate widget on .full 
$('.full').BearCal({ 
    testTrig: function() { 
     console.log("testTrig event: full"); 
    } 
}); 

// Instantiate widget on .mini 
$('.mini').BearCal({ 
    testTrig: function() { 
     console.log("testTrig event: mini"); 
    } 
}); 

샘플 : 당신은 실수로 전역 변수가 http://jsfiddle.net/NrKVP/13/

답변

6

는 :

_this = this; 

플러그인의 두 인스턴스 생성자에서 같은 (글로벌) _this에 자신의 this을 넣어 것을 의미 . 결과적으로 모든 플러그인 인스턴스는 마지막 행에 대해 this을 사용합니다.

var _this = this; 

데모 : http://jsfiddle.net/ambiguous/9NQNz/

이 원하는
관련 문제