2012-09-06 12 views
1

일부 TabPanels 및 일부 탭이 포함 된 Ext Js 웹에서 작업 중이며 각 탭마다 다른 JQuery를 사용하고 싶습니다. 일부 JQuery 이벤트를 첨부하면 모든 탭에 첨부됩니다. 그들은 같은 HTML에 있기 때문에 하나의 탭을 열기 전에 모든 JQuery 이벤트의 바인드를 해제하고 원하는 탭을 바인딩하여 해당 탭이 열렸을 때 이벤트를 듣고 싶습니다. TabPanel Events

listeners:{ 
     beforetabchange : function(){ 
      Ext.Msg.alert("beforetabchange"); 
     }, 
     beforeshow : function(){ 
      Ext.Msg.alert("beforeshow"); 
     }, 
     activate : function(){ 
      Ext.Msg.alert("activate"); 
     }, 
     deactivate : function(){ 
      Ext.Msg.alert("deactivate"); 
     } 
    } 

그래서 나는 많은 팝 업을 기대했지만, 하나는 "beforetabchange"에 해당하는 하나 보여 그것은 단지 실행됩니다 이벤트를 테스트하기 위해

나는 나의 탭 패널에 다음 리스너를 부착 처음으로 한 탭을 열면 ... 예를 들어 내가 얻지 못하는 것이 있습니다 : 탭을 열 때마다 "활성화"팝업이 표시되어야합니까? 나는 그렇게 기대하고 있었다.

+2

1) 세계에서 ExtJS와 jQuery **를 함께 사용하려는 이유 **? ExtJS는 충분히 길입니다. 2) 탭을 변경하면 ** TabPanel **은 'beforetabchange' 이벤트를 발생시키고 ** 개별 패널 **은 TabPanel을 포함하는 TabPanel이 변경되지 않고 활성화됩니다.'activate' 및'deactivate' 이벤트가 발생합니다 그건 의미가 있습니다. –

+0

@Drmitry Jquery는 ExtJs보다 DOM에 더 편안한 액세스를 제공합니다. – reporter

+2

편안한 액세스에 대해 논쟁 하겠지만, ExtJS는 매우 무거운 라이브러리이기 때문에이 경우에는 부적절하다고 생각합니다. 사용하는 경우 jQuery를 좋아하기 때문에 jQuery를 추가하고 싶습니다. 엄청난 과잉입니다. –

답변

2

내가하고 싶은 것을 이해할 수 없지만 아래 코드를 가지고 있습니다. 도움이 될 수 있습니다.

 
items:[{ 
     xtype: 'tabpanel', 
     activeTab: 0, 
     items:[{ 
      title: 'tab1', 
      id:'divtab1', 
      autoHeight: true, 
      items:[{ 
        // your content here 
      }] 
     },{ 
      title: 'tab2', 
      id:'divtab2', 
      autoHeight: true, 
      items:[{ 
        // your content here 
      }] 
     },{ 
      title: 'tab3', 
      id:'divtab3', 
      autoHeight: true, 
      items:[{ 
        // your content here 
      }] 
     }], 
     listeners: { 
      'tabchange': function(tabPanel, tab){ 
       if(tab.id=="divtab1") 
       { 
         function1(); 
       } 
       else if(tab.id=="divtab2") 
       { 
         function2(); 
       } 
       else 
       { 
         function3(); 
       } 
      } 
     } 

}] 
+0

도움 주셔서 감사합니다. 마지막으로 내가 한 것은'activate' 이벤트와'deactivate' 이벤트를 올바르게 사용하여 이전에 TabPanel의 리스너 목록에있는 것이 아니라'TabPanel'을 위해 생성 된 각 'Panel'에 이러한 리스너를 추가하는 것입니다. – Javier