Ext JS 点击事件

2023-11-22

我有以下事件:

Ext.onReady(function() {

    Ext.select('.gallery-item img').on('click', function(e) {
        Ext.select('.gallery-item').removeClass('gallery-item-selected');
        Ext.get(e.target).parent().addClass('gallery-item-selected');
    });

});

页面加载时效果很好。

然而,我动态地创建了类 gallery-item 的附加 div,其中包含图像。创建新项目后,单击事件将停止工作。

我怎样才能update这个绑定?

Thanks.


Ext.select选择所有元素,然后静态地向它们添加点击处理程序。对于具有相同处理程序的新元素,还必须在创建它们后将其添加到它们中。然而,这不是最佳方法。

在这种情况下,最好使用事件委托——向容器元素添加一个单击处理程序,然后根据单击的项目委托处理。这更加高效(只需要一个事件处理程序 fn)并且更加灵活。例如,如果您的包含元素的 id 为“gallery-ct”,则如下所示:

Ext.onReady(function() {
    Ext.get('gallery-ct').on('click', function(e, t){
      // t is the event target, i.e. the clicked item.
      // test to see if it is an item of the type you want to handle
      // (it is a DOM node so first convert to an Element)
      t = Ext.get(t);
      if(t.hasClass('gallery-item'){
        // radioClass automatically adds a class to the Element
        // and removes it from all siblings in one shot
        t.radioClass('gallery-item-selected');
      }
    });
});

EDIT:如果您的点击目标中可能有嵌套项目,那么您将需要采取稍微(但不是很多)更高级的方法,并在点击事件从被点击的元素中冒泡时查找您的目标(使用事件对象.getTarget)。如果您的目标在事件链中,因为它从单击的 el 中冒出,那么您就知道它仍然是有效的单击。更新的代码:

Ext.onReady(function() {
    Ext.get('gallery-ct').on('click', function(e, t){
      // disregard 't' in this case -- it could be a child element.
      // instead check the event's getTarget method which will 
      // return a reference to any matching element within the range
      // of bubbling (the second param is the range).  the true param 
      // is to return a full Ext.Element instead of a DOM node
      t = e.getTarget('.gallery-item', 3, true);
      if(t){
        // if t is non-null, you know a matching el was found
        t.radioClass('gallery-item-selected');
      }
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ext JS 点击事件 的相关文章

  • 如何使用 jQuery 或其他 js 框架将字符串作为文件上传

    使用javascript 我有一个字符串文件 通过ajax请求获得 如何通过另一个ajax请求将其作为文件上传到服务器 以下是无需手动构建多部分请求正文的方法 var s some string data var filename foob
  • 如何防止 Ext Js 树中检查更改时的 itemclick 事件

    我在 Ext tree Panel 中添加了两个侦听器 检查更改 和 项目单击 但我注意到 当检查发生更改时 它也会触发项目单击事件 我希望阻止该项目的点击事件 listeners checkchange function node che
  • 在 ExtJS 网格中编辑整行后触发“afteredit”?

    我有一个 ExtJS 编辑器网格 里面有一些列 我想修改记录上的数据并将数据自动保存到数据库 但我只需要在完成编辑当前行的所有单元格后保存数据 我使用了 afteredit 事件 但它在一个单元格更改后立即触发了该事件 在完成所有单元格的修
  • 使用 ExtJ 进行多选组合框

    如何实现多选组合框作为Ext FormPanel使用ExtJs 我一直在寻找 但似乎找不到与最新版本的 ExtJs 兼容的解决方案 这个问题 https stackoverflow com questions 2635809 multise
  • ExtJS AJAX 另存为对话框

    我发出 ExtJS AJAX 请求 并且希望向用户显示标准浏览器 另存为 对话框 要下载的文件可以是 pdf jpg 或 png 文件 目前 AJAX 请求已成功提交 但由于它是异步的 因此不会出现对话框 我可以简单地不使用 AJAX 但是
  • 从 Ext.data.Store 访问 http 状态代码

    我有一个 http API 令人震惊的新技术 它对设置不同响应状态的不同错误做出反应 问题是 当使用 Ext data Store 和一些 XMLHttpRequest inside 代理时 处理这种状态的最佳方法是什么 据我所知 加载 事
  • 在文本字段中输入文本时禁用面板水平滚动

    当有人在文本字段中输入文本时 我想禁用面板的水平滚动 第一个问题 目前的问题是 当您在任何文本字段中输入文本并按键盘上的右箭头键 keyCode 39 时 面板水平方向也会向正确的方向移动 我想在文本字段中输入文本时禁用它 第二个问题仅当单
  • 如何在 ExtJs 中添加复制到剪贴板功能?

    如何在 ExtJs 中添加复制到剪贴板功能 它在 IE 浏览器中工作正常 但在 Firefox 中不行 还需要进行哪些更改才能使其在 FF 浏览器中工作 Code function selectCopy txt txtId Ext getC
  • 如何使 extjs 手风琴垂直滚动

    在这里摆弄 https fiddle sencha com fiddle 5gv 如果手风琴中有很多面板 它们就会在垂直方向上相互碰撞 并且无法扩展 我想让手风琴的总高度等于标题的高度加上一个面板主体的高度 展开 然后父面板应该只有一个滚动
  • 单击父节点时检查树的子节点 [ExtJS]

    我想知道如何在单击 ExtJs 中的特定节点时检查树的同级节点 我已经给了每个节点的 id 我可以访问单击的节点的 id 那么我如何继续自动检查子节点 有人请帮助我 or any other way of getting hands on
  • 将 Flex 值动态添加到 extjs 中的控制器

    我在 视图 中给出了一些项目 容器 布局为hbox 现在我想给flex通过 控制器 为每个项目赋予值 我怎样才能做到这一点 我已经浏览了文档 但找不到任何类似的方法setFlex EDIT Ext apply Ext getCmp IdHe
  • EXTJS 中选项卡面板的单击侦听器

    我在 extjs 中使用选项卡面板 我想在单击选项卡时显示警报 但我不知道如何 这就是我现在所做的 xtype tabpanel activeTab 0 region center items xtype panel title All i
  • 删除在网格 ExtJS 4 中选择特定行的功能

    我必须删除在网格中选择某些行的功能 我使用复选框模型 selModel Ext create Ext selection CheckboxModel mode SIMPLE 要禁用选择 我使用 beforeselect 事件 befores
  • Extjs中始终显示Slider的提示文本

    在 Extjs 4 1 1a 中 如何保持tip text滑块始终可见 目前 tip text每当用户拖动滑块栏时就可见 我搜索了docs http docs sencha com ext js 4 0 api Ext slider Sin
  • 原生编程对于移动开发有何优势?

    我需要为一家公司在一些主要的移动操作系统上开发应用程序 特别是 iOS Android 和 WP7 我最初计划为三种不同的操作系统编写三个独立的应用程序 每个应用程序都使用本机 SDK 然而 这样做有什么好处吗 有许多可用的跨平台工具 Se
  • ExtJs 4,从容器中删除控件并将其从内存中删除的正确方法是什么?

    这个问题很简单 但我找不到一个好的 明确的答案 正确的方法是什么 从容器中删除控件 在 ExtJs 4 中将其从内存中删除 Ext AbstractContainer remove http dev sencha com deploy ex
  • 带有自定义按钮的 ExtJs 消息框

    如何使用自定义按钮显示 ExtJS 消息框 我想要一个带有自定义消息以及 取消 和 停用 按钮的消息框 请给一些想法 buttons text Cancel handler function Ext MessageBox hide subm
  • Extjs Restful Store,批量发送请求?

    我创建了一个带有商店配置的网格组件 如下所示 Create the store config store new Ext data Store restful true autoSave false batch true writer ne
  • ExtJS 4:克隆商店

    我正在尝试找出如何克隆Ext data Store不保留旧的参考 让我用一些代码更好地解释一下 这是源商店 var source Ext create Ext data Store fields name age data name foo
  • 向 ExtJS GridPanel 添加过滤器标题行

    我知道可以在列标题下添加一个过滤器行 因为我已经看到它是用 Coolite 完成的 但由于我是 Sencha ExtJS 的新手 所以我很难找到如何直接在脚本中使用 ExtJS grid GridPanel 来完成此操作 请您用一些样品为我

随机推荐

  • 为什么我需要先更改绑定源位置才能保存更改

    我有一个小型演示 WinForms 应用程序 其中一份表格是我的 添加新人 表格 我使用了详细信息视图而不是DataGridView来自我的数据源 当我输入数据并单击导航器上的保存按钮时 更改为零 但是我输入了MovePrevious an
  • Ruby on Rails 中的 send_data 与电子表格插件结合使用时遇到困难

    我在控制器中有一个函数 它接受一些规范并生成有关它们的报告 这个函数 user report 在视图中被调用 controller gt reports action gt user report print state gt 打印 gt
  • 替换多个换行符、制表符和空格[重复]

    这个问题在这里已经有答案了 我想用一个换行符替换多个换行符 用一个空格替换多个空格 I tried preg replace n n n text 并失败了 我还在 text 上完成这项工作以进行格式化 text wordwrap text
  • Gradle + Buildship - 在 JAR 和项目之间切换依赖关系

    我在按照我想要的方式配置 Buildship for Eclipse 时遇到一些问题 目前 我始终在 Eclipse 中打开超过 50 个项目 但我想改为仅在 Eclipse 中积极处理的项目 而其他项目将使用 Maven 存储库来解决其依
  • Nodejs POST 请求多部分/表单数据

    我正在尝试通过 POST 请求上传照片request module 根据自述文件我应该能够做到这一点 var r request post http posttestserver com post php requestCallback v
  • 使用 COM 互操作将 BSTR 从 C++ 编组到 C#

    我有一个用 C 编写的进程外 COM 服务器 由一些 C 客户端代码调用 服务器接口之一上的方法向客户端返回一个大的 BSTR 我怀疑这会导致内存泄漏 该代码有效 但我正在寻求有关编组 BSTR 的帮助 稍微简化一下 服务器方法的 IDL
  • htaccess - 重定向到子文件夹而不更改浏览器 URL

    我有一个域 其中包含具有 Web 应用程序结构的子文件夹 我添加了一个 htaccess在我的根域上指向我的子文件夹 Web 应用程序上的公共文件夹 它工作正常 但是当我输入时www example com浏览器 URL 更改为www ex
  • 无法更新 Xcode 4.2。错误:请查阅 var/log/install.log 了解更多详细信息?

    UPDATE 既然这个问题得到了一些看法 我想我最好强调这样一个事实 我解决了问题简单地通过从 Mac App Store 重新下载 Xcode 重新安装后 它甚至给了我一个方便的选项来删除以前的版本并将其替换为新版本 希望这可以帮助遇到同
  • 从 std::thread 获取返回码? [复制]

    这个问题在这里已经有答案了 可能的重复 C std thread 的简单返回值 有没有办法从 std thread 获取返回码 我有一个返回整数的函数 我希望能够在线程执行完毕时从该函数获取返回代码 不 不是这样的std thread is
  • 有界度生成树中的 np 完整性

    我理解为什么有界度生成树被认为是具有 1 或 2 度的 NP 完全 它是哈密顿路径问题的一个实例 但我不明白为什么这适用于度 gt 2 如果有人可以解释为什么这是度 gt 2 的 NP 完全问题 这将是最有帮助的 好吧 我认为你可以从有界
  • R Shiny:在服务器端使用 Actionbutton 的 Onclick 选项

    我想制作一个闪亮的应用程序 用户可以在其中按下操作按钮 然后触发服务器端的一些代码 在 www 文件夹中创建一个文件 然后打开 下载该文件 假设该文件是 test txt 在我的例子中 它将是各种 R Excel 和 exe 文件 这些文件
  • Visual Studio 2010“按任意键继续...”不显示[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 当我的应用程序完成执行时 按任意键继续 字样不会显示在控制台中 我知道这个提示应该在 启
  • 聚合匹配的项目在 mongodb 中不起作用

    我正在尝试根据某些匹配条件获取数据 首先我尝试过这个 这里的ending date是完整的日期格式 Offer aggregate match carer id req params carer id status 3 group id y
  • JavaScript 按钮重定向

    试图让我的按钮充当链接 尝试过 a 标签 如果您在新选项卡中打开它会起作用 但如果您单击它则不起作用 然后尝试了这段代码 但什么也没有 建议 a
  • Angular-cli 资产优化中的“JavaScript 堆内存不足”

    我正在 Angular cli 项目中创建传单地图 地图图块本地存储在 assets 文件夹中 因为它是栅格地图 问题是 当我有很多地图缩放级别时 我有超过 28 万张图像 大小大约为 1 1 GB 而且它会变得更大 当我使用ng serv
  • 如何在 Java 中查找给定服务器的 DNS MX 记录?

    有人知道如何使用标准库在java中获取MX地址 例如来自gmail com 吗 或者我需要下载外部的吗 我正在使用 netbeans 如果它有帮助的话 如果它为此提供了一些东西 我也在java中为此寻找标准库 不成功 然后我用过dnsjav
  • 获取浏览器中的快捷键组合

    我想制作一个页面 其中某些输入和链接附加有访问键 并且我想通知用户需要按什么组合键来激活输入或链接 有没有办法通过JavaScript自动获取浏览器的accesskey组合键 或者我是否需要检测它是哪个浏览器 然后只使用一个存储浏览器使用的
  • 如何在 vim 中用 & 符号替换?

    正如标题所说 我想用与号 替换 制表符 I use s t g 当然这是行不通的 我在 mac os x 上使用 vim 如果这有影响的话 谢谢 您确定问题出在 符号上吗 我收到了更多关于该标签的投诉 别忘了逃避它 s t g
  • 求大 n 和 k 模 m 的二项式系数

    我想计算 nCk mod m 具有以下约束 n k m 10 9 7 我读过这篇文章 但这里 m 的值为 1009 因此 使用卢卡斯定理 我们只需要计算 1009 1009 个不同的 aCb 值 其中 a b 如何在上述限制下做到这一点 我
  • Ext JS 点击事件

    我有以下事件 Ext onReady function Ext select gallery item img on click function e Ext select gallery item removeClass gallery