JQuery 函数只能在函数内工作

2023-12-25

我有一个带有下拉列表的页面和“添加新”中的选项之一。为它创建的函数效果很好。

$('#town_id').on('change', function(){
    if($(this).val() == "ADD_NEW"){
        console.log('Add New');
        $('#town_id').val('');
        $('#town_id').trigger('chosen:updated');
        $('#modal-1').modal('show');
    }
});

问题是,有时选择框根本不会出现在页面上,我将使用 jquery 将其附加到页面中。这一部分也可以工作,但是在运行上面的代码时,不会拾取从 jquery 添加的 ADD NEW 。如果我将上面的代码放在添加选择代码下,然后在下拉列表中选择“添加新”,则可以正常工作。

// remove towns text
$('.towns').html('<select class="form-control chosen add_town" name="town_id" id="town_id" data-rule-required="true" data-placeholder="Choose a town"></select');
$("#town_id").chosen({disable_search_threshold: 15});
$("#town_id").css('width', '100%');


// add chosen select
$('#town_id').append('<option value="' + result.id + '" selected>' + result.name + '</option>');
$('#town_id').append('<option value="ADD_NEW">Add new town...</option>');
$('#town_id').trigger('chosen:updated');

有没有办法让它工作而不重复选择代码?


是的,有一个解决方案。您必须使用委托,因为 HTML 元素是动态创建的。

考虑到.townselement 选择框的容器和#town_id选择框的语法如下所示:

$('.towns').on('change', '#town_id', function(){
    if($(this).val() == "ADD_NEW"){
        console.log('Add New');
        $('#town_id').val('');
        $('#town_id').trigger('chosen:updated');
        $('#modal-1').modal('show');
    }
});

是的,这适用于静态和动态选择框。


直接和委托事件

When a selector提供后,事件处理程序被称为委托的。当事件直接发生在绑定元素上时,不会调用处理程序,但是仅适用于与选择器匹配的后代(内部元素). [...]

事件处理程序仅绑定到当前选定的元素;当您的代码调用时,它们必须存在于页面上.on().

阅读更多 https://api.jquery.com/on/#direct-and-delegated-events

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

JQuery 函数只能在函数内工作 的相关文章

随机推荐

  • 使用 AVX 一次性进行 4 个水平双精度求和

    该问题可以描述如下 Input m256d a b c d Output m256d s a 0 a 1 a 2 a 3 b 0 b 1 b 2 b 3 c 0 c 1 c 2 c 3 d 0 d 1 d 2 d 3 到目前为止我所做的工作
  • 新站点的 MVC 或 Webform 架构

    我正在开发一个网站 求职门户 我有2 3年的ASP NET webform开发经验 我想创建一个专业的工作门户网站 以改进和了解更多信息 但试图决定最佳架构 任何建议或建议都会有所帮助 Thanks 嗯 有很多种方法可以回答这个问题 我相信
  • 如何重用mysql中已删除的主键?

    我在 mysql 表中有一个名为 id 的列 它也是自动递增的主键 当我删除行时 它们的 id 也将被删除 从而在我的 id 序列中创建 漏洞 例如 1 2 3 9 10 30 等 有没有办法重新使用这些已删除的 id s Using AL
  • Visual Studio 2015 中缺少重构菜单

    我在 Visual Studio 2015 中找不到右键单击上下文菜单 我知道我的项目或我正在处理的文件没有任何问题 我可以在 Visual Studio 2013 中找到右键单击上下文重构菜单 但是 在 Visual Studio 201
  • 如何使用 PHP 签署 AWS API 请求?

    我正在尝试签署 AWS API 请求 然后使用 cURL 目的是将跟踪号码提交给服务提供商的 API 并使用响应 我对 AWS API 完全是个菜鸟 经过多次测试后找不到我的错误 我尝试了很多方法 但都导致 message Forbidde
  • 如何编写特定的数学算法

    我得到了这个算法来帮助我在 SQL 中创建夹具列表 但是将其应用为 SQL 代码 我不知道该怎么做 有没有办法有人可以指导我如何用代码应用它 下面是我的表架构 下面是算法 League LeagueID TINYINT IDENTITY 1
  • 在 Spyder 中使用 IPython 时如何防止制表符在控制台输出中转换为空格

    在 IDLE Python 中如果我这样做print a tb 我得到的输出如下所示 a TAB b 如果我在 Spyder 的 IPython 中执行相同的操作 则会得到如下输出 a 7 spaces b 我喜欢将数据表输出为制表符分隔的
  • 如何获取已应用的 Spring Boot(自动)配置列表

    如何获取已应用的 Spring Boot 自动或非自动 配置列表 构建工件后 如果启动它 您可以获得自动配置报告 其中包括 debug命令参数 java jar artifact jar debug 或者直接将其添加为 SpringAppl
  • 带下拉菜单的角度过滤

    我有以下代码 HTML
  • Python SVG 转换器创建空文件

    我下面有一些代码应该将 SVG 图像转换为 PNG 它运行没有错误 但创建了一个空白的 PNG 文件而不是与原始 SVG 具有相同图像的图像 我确实发现这不是 cairo 的错误 而是与 rsvg 有关的更多错误 我得到了here http
  • 调试 BigQuery 存储过程

    有什么方法可以在 BigQuery 存储过程中使用 print 语句吗 我有一个如下所示的存储过程 我喜欢查看如何生成 SQL 语句来调试问题或任何其他更好的方法来调试存储过程正在生成的内容等 CREATE OR REPLACE PROCE
  • 我的 google 地图 api 脚本出了问题

    在 完成 网络部分之后 我一直在做项目的移动部分 我正在使用谷歌地图API 我编写了以下代码 function codeAddress var image images tickmark1 png var address document
  • 内部 cmd.exe 命令设置的 ERRORLEVEL 值是多少?

    ERRORLEVEL 是大多数 cmd exe 命令结束时返回的值 该值根据一系列条件而变化 因此了解命令返回的值是有价值的信息 可能有助于编写更好的批处理文件 所有外部 exe 程序在结束时都会更改 ERRORLEVEL 这是两者的固有机
  • NSURLSession/NSURLConnection HTTP 加载在 iOS 9 上失败

    尝试在 iOS9 上运行我现有的应用程序 但在使用时失败AFURLSessionManager block NSURLSessionDataTask task self sessionManager dataTaskWithRequest
  • 表示 SQL 数据库中的列表

    我正在用 C 编写一个带有 SQL 数据库的应用程序 我有一个模型 Person string id unike key string name List
  • 如何打印Python列表中包含的字典的键和值

    lloyd name Lloyd homework 90 0 97 0 75 0 92 0 quizzes 88 0 40 0 94 0 tests 75 0 90 0 alice name Alice homework 100 0 92
  • 使用 REST 删除多条记录

    删除多个项目的 REST 方式是什么 我的用例是我有一个 Backbone Collection 其中我需要能够一次删除多个项目 选项似乎是 为每条记录发送一个 DELETE 请求 如果可能有几十个项目 这似乎是一个坏主意 发送 DELET
  • iPhone 可以支持的最大纹理尺寸是多少?

    1024 1024 或者 iPhone3gs 及以上版本只有 2048 2048 正如 iPhone 3GS 一样PowerVR SGX535 http en wikipedia org wiki IPhone ModelsGPU 最大纹理
  • 为什么在 javascript 中添加 2 + 4 时得到 24

    我正在尝试这个 function add things var first 2 var second 4 alert first second 但它给了我 24 而不是 6 我做错了什么 您正在使用 运算符连接两个字符串 尝试以下任一方法
  • JQuery 函数只能在函数内工作

    我有一个带有下拉列表的页面和 添加新 中的选项之一 为它创建的函数效果很好 town id on change function if this val ADD NEW console log Add New town id val tow