2012-08-06 70 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