Social Reiot

Social Game Developer wandering in strange dungeon.

jQuery UI Widget _setOption

jQuery UI widget 은 기본적으로 한번에 여러 개의 옵션을 설정할 수 있다.

1
$('...').somewidget('option',{aa:bb, cc:dd});

하나의 옵션을 설정할 때의 추가적인 로직을 넣으려면 _setOption() 을 재정의하면 된다.

1
2
3
_setOption: function(key,value){
  if(key=='some'){...do something...}
}

가끔은 여러 개의 옵션을 한번에 설정할 때, 그 중 몇몇 옵션이 바뀔 경우에 대한 추가적인 로직을 넣으려면 _setOptions 를 재정의하면 된다. jQuery UI Dialog 의 코드가 가장 좋은 예제일 것이다. 다만 1.8.6 부터 지원하니까 버전에 주의하길.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_setOptions: function( options ) {
  var self = this,
  resizableOptions = {},
  resize = false;

  $.each( options, function( key, value ) {
      self._setOption( key, value );

      if ( key in sizeRelatedOptions ) {
          resize = true;
      }
      if ( key in resizableRelatedOptions ) {
          resizableOptions[ key ] = value;
      }
  });

  if ( resize ) {
      this._size();
  }
  if ( this.uiDialog.is( ":data(resizable)" ) ) {
      this.uiDialog.resizable( "option", resizableOptions );
  }
}

Comments