如果更改来源不是来自 html,则不会触发 Javascript 事件?

2024-03-26

我试图理解为什么以下示例中的更改事件没有被触发(我将准确显示在哪里)。

我有一个复选框,我们将其称为“主复选框”,选中时 - 我想检查一些其他相关的复选框(到目前为止有效)。

此外,当我取消选中相关复选框之一(子复选框)时 - 我想取消选中 mainCheckbox,这也有效 - 但这里有一些我无法理解的内容:

我正在更改 mainCheckbox 的选中属性(在onchange“childCheckbox”的处理程序),

怎么来的onchangemainCheckbox 的处理程序没有被调用?
或者说怎么会出现onchange主复选框的事件未触发?

这是代码:

//binding to the 'mainCheckbox' change event:
$("[data-role='group']").bind("change", function(event){
    //checking / unchecking all related checkboxes respectivly
    $("li input[data-group='" + event.target.id + "'").prop('checked', $(this).prop("checked"));
})

//binding to the change event of every 'child checkbox'
$("li input[data-group]").bind("change", function(){
    if (event.target.checked){
        //if the child checkbox is now checked - I am checking if now all child checkboxes are checked,
        //if so - I need to check the main checkbox.
        if ($("[data-group=" + event.target.dataset.group + "]:checked").length == $("[data-group=" + event.target.dataset.group + "]").length){
            $("#" + event.target.dataset.group).prop("checked", true);
        }
        //TODO: add this device to the selectedDevices array.
    }
    else {
        //the checkbox is now unchecked - so I am unchecking the main checkbox -
        //but here is my failing to understand part: I am unchecking the main checkbox - 
        //why the change event is not triggered? I thought that now all child checkboxes will be unchecked as well
        //(I am happy they are not :) just failing to understand why)...
        $("#" + event.target.dataset.group).prop("checked", false);
        //TODO: remove this device from the selectedDevices array.
        
    }
    
})

一般来说,事件仅在响应时触发user动作,而不是代码中的动作。设置checked复选框上的属性不会触发其change事件;这user更改复选框的选中状态即可。

当您使用代码设置value of an input, the selectedIndex (or value) of a select, etc.

对于以下方面来说也是如此submit事件于form元素: 调用HTMLFormElement's submit函数将提交表单而不触发其submit event. But,如果您使用 jQuery 提交表单(例如,如果您调用submit围绕一个 jQuery 对象HTMLFormElement), it does触发其submit事件处理程序。这是 jQuery API 设计的一个不幸的副产品。

如果你想触发一个事件,你可以使用 jQuery 来做到这一点trigger http://api.jquery.com/trigger功能。所以如果合适的话,设置后checked, 你可以.trigger("change")。总的来说我主张not生成类似的合成预定义事件(相反,只需调用您需要调用的任何函数,或使用合成自定义事件),但有有效的用例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果更改来源不是来自 html,则不会触发 Javascript 事件? 的相关文章

随机推荐

  • 获取add_subdirectory添加的CMake项目版本

    我有一个依赖于 Google Test 库的 CMake 项目 我已经使用添加了 Google 测试ExternalProject Add and add subdirectory如此处所述 https github com google
  • jasig cas 重定向过多问题

    我正在尝试使用 spring security 和 spring security cas 带有 Jasig CAS 的 SSO 来保护 spring boot Web 应用程序 尝试访问受保护的资源时 我遇到了太多重定向错误 该项目可用h
  • 使用兆秒差距在不同位置出现多个错误

    我将使用 megaparsec 来解析大学项目的编程语言 但是 我寻找一种报告多个错误的方法 我知道 withRecovery 并且我看到了this https github com mrkkrp megaparsec issues 43问
  • PLSQL:使用合并语句时获取更新与插入的记录数

    无论我的记录如何使用 SQL ROWCOUNT 插入或更新 合并都会始终为您提供合并的记录数 但是如何找出实际插入的记录数与实际更新的记录数 我尝试了这篇文章中的选项 但这似乎不起作用 https asktom oracle com pls
  • Python - 在应用程序中直接显示网络浏览器/iframe

    我有一个脚本 如果对人们回答问题有帮助 那就使用 kivy 我想让它在运行时直接显示 iframe 之类的东西 而不是打开 浏览器 例如这样的事情 def browser url google com iframe url browser
  • 远程连接clearDB heroku数据库

    我如何使用 MySQL 查询浏览器等在 heroku 上远程连接到 ClearDB MySQL 数据库 从哪里获取 url 端口 登录名和密码 在 heroku 网站中 转到 我的应用程序 并选择已安装 ClearDB 的应用程序 在顶角单
  • 稀疏矩阵-矩阵乘法

    我目前正在使用稀疏矩阵 并且必须将稀疏矩阵 矩阵乘法与全矩阵 矩阵乘法的计算时间进行比较 问题是稀疏矩阵计算比全矩阵计算慢得多 我正在使用压缩行存储来压缩我的矩阵 并且将两个矩阵相乘非常耗时 四倍for循环 所以我想知道是否有更好的压缩格式
  • Highchart 日期选择器

    我正在尝试让 jquery ui datepicker 与 highcharts 一起使用 以便用户可以选择一个日期 例如 用户选择 10 月 10 日至 10 月 25 日 用户选择日期后 高图应重新绘制并显示已完成的项目的小时数以及任务
  • jQuery tablesorter 如何找到 sortList 对象

    我正在使用 jQuery 表排序器插件 我想存储用户如何对页面上的表格进行排序 并在下次加载页面时自动按这种方式排序 为此 我首先需要能够找到存储表排序方式的 sortList 对象 对于我的一生 我不知道如何获得它 该文档似乎没有任何相关
  • 尝试让一个对象查看 Unity 中的另一个对象

    嗨 我一直在尝试让对象 Tower 查看对象 Enemy 但是我收到错误 非静态字段 方法或属性 Enemy position 需要对象引用 这是敌人的类 我试图在其中定义敌人的位置以供塔参考 有谁知道如何解决这个问题 谢谢 public
  • 将 SpellCheck.IsEnabled 添加到控件后,WPF 表单加载速度非常慢

    所以我有一个神秘的问题 在我添加之后SpellCheck IsEnabled对于我的其中一个控件 承载该控件的表单需要 3 秒以上的时间才能加载 删除拼写检查属性 表单会立即加载 仅供参考 以下是表格中唯一更改的地方
  • 在 Python 3.5 而不是 2.7 上运行 Django 1.9

    我在 OSX 10 10 上运行 Python 2 7 和 3 5 还有 Django 1 9a 这两个版本都支持 Python 问题是我想在 Python 3 5 而不是 2 7 上运行 Django 在某些线程上 我发现了通过包含 Py
  • 生成传出 URL 时选择了意外的路由

    请考虑以下路线 routes MapRoute route1 controller month year action user routes MapRoute route2 controller month year action 以及以
  • ColdFusion 8中是否有类似于ColdFusion 9中的ArrayFind的功能?

    我在工作中与另一位程序员同事交谈 我们使用 ColdFusion 他告诉我只需在数组中查找一个值我必须执行整个循环 ColdFusion 8 中是否真的没有函数可以简单地在数组中查找值 arrayFind ColdFusion 8 中不存在
  • 从 mongoDB 中删除文档

    这可能是一个非常愚蠢的问题 但我是 MongoDB 的新手 所以请耐心等待 我创建了一个独立的红宝石类 require rubygems require mongo require bson require mongo mapper Mon
  • 如何计算Java中的时差?

    我想从 19 00 00 减去两个时间段 例如 16 00 00 Java 有没有这个功能 结果可以以毫秒 秒或分钟为单位 Java 8 有一个更清洁的解决方案 https docs oracle com javase 8 docs api
  • 从 std::cout 或 std::ofstream(file) 获取 std::ostream

    我如何绑定std ostream到任一std cout或到一个std ofstream对象 取决于特定的程序条件 尽管由于多种原因这无效 但我希望实现语义上与以下内容等效的东西 std ostream out condition std c
  • 我什么时候应该使用 LRUCache 回收位图?

    我正在使用一个LRUCache缓存存储在文件系统上的位图 我根据这里的示例构建了缓存 http developer android com training displaying bitmaps cache bitmap html http
  • 在 Tkinter 中处理触摸屏手势

    我将如何在 Tkinter 中安装触摸屏手势处理程序 我需要一些特别简单的事情 每当检测到 展开 手势时就增加字体大小 如果 Tcl Tk 没有具体实现的话 这是否可以在 Tkinter 中实现 我想要么窗口管理器向客户端窗口发送一些我可以
  • 如果更改来源不是来自 html,则不会触发 Javascript 事件?

    我试图理解为什么以下示例中的更改事件没有被触发 我将准确显示在哪里 我有一个复选框 我们将其称为 主复选框 选中时 我想检查一些其他相关的复选框 到目前为止有效 此外 当我取消选中相关复选框之一 子复选框 时 我想取消选中 mainChec