2012-08-06 64 views
0

我想從一些Sencha元素中的JQuery捕獲一個.keypress事件,但似乎Sencha會將它們隱藏到JQuery中。在Ext Js元素上使用JQuery

我將展示一段代碼,也就是simplier,但有相同的問題:

 Ext.onReady(function(){ 

      $("#jquery").click(function() { 
       alert('Handler for click called.'); 
      }); 

      var contextMenu = new Ext.menu.Menu({ 
       renderTo: document.body, 
       width: 150, 
       floating: false, 
       plain: true, 
       items: [{ 
        text: 'button1', 
        id: 'jquery' 
       },{ 
        text: 'button2' 
       }] 
      }); 
     }); 
    </script> 
</head> 
<body> 
<div id="test"> I am a div </div> 
</body> 

這裏我的目標是當我點擊button1時,彈出的警報就是s雖然,但它並沒有發生。但是,如果我改變了jQuery代碼到:

$("#test").click(function() { 
alert('Handler for click called.'); 
}); 

我單擊該DIV內容彈出它顯示的,所以庫加載正確。

我覺得一定有什麼東西有關煎茶如何創建HTML,這是我檢查,我可以看到Button1的是像如下:

<a id="jquery" class="x-menu-item" hidefocus="true" unselectable="on" href="#"><img alt="" src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" class="x-menu-item-icon " id="ext-gen7"><span class="x-menu-item-text" id="ext-gen8">button1</span></a> 

但仍然,我想我不能使用JQuery。 使用JQuery選擇器訪問sencha元素的任何想法或解決方案?

回答

3

我不知道你爲什麼不想使用ExtJS的使用jQuery
嘗試同時使用,因爲這隻會增加頁面倍,不會添加任何新功能
ExtJS的本身就是一個相當大的庫,並可靠地避免支持DOM操作

您的代碼存在的問題是,當所有依賴關係都被加載時,Ext.onReady()事件觸發。 ExtJS動態地生成HTML元素,所以當這個事件引發時,所有的腳本都存在,但沒有創建任何東西,所以沒有元素的ID爲jQuery,因此你不能通過jQuery訪問它

我建議insted這是
*把這jQuery的代碼裏面的一些afterrender事件,所以你確信HTML元素是存在的
*如果你不能這樣做然後使用jquery live或jquery on,因爲它們是可用於將事件處理程序分配給動態創建的元素。
*最優先考慮的是將listener in the ExtJS style添加到元素中,Extjs將爲您處理事件的提升。這樣

listeners: { 
     click: { 
      element: 'el', //bind to the underlying el property on the panel 
      fn: function(){ console.log('click el'); } 
     }, 
     dblclick: { 
      element: 'body', //bind to the underlying body property on the panel 
      fn: function(){ console.log('dblclick body'); } 
     } 
    } 
+0

謝謝你的答案的東西,這讓很多的意義,所以它必須是我的問題,我會嘗試的東西來控制我的功能,這就是所謂的渲染網頁後,如果我找到任何解決方案我會發布它。 聽衆的解決方案也是okey,但我的應用程序更復雜,它只是和示例,我已經用這種方式聽衆,並沒有我需要,但無論如何謝謝! – Javier 2012-08-06 11:36:05

+0

thankx ..我仍然會要求你使用監聽器的按鈕,並避免使用jquery – 2012-08-06 11:40:59

+0

我會按照你的意見,我不會使用jQuery的按鈕,但我將需要它用於其他目的,所以這個例子幫助我很多。 非常感謝! – Javier 2012-08-07 08:01:19