当前位置: 首页 > 面试题库 >

在jQuery中将live()变成on()

谯皓君
2023-03-14
问题内容

我的应用程序已动态添加了下拉列表。用户可以根据需要添加任意数量。

传统上,我使用jQuery的live()方法来检测何时change()编辑以下Dropdowns之一:

$('select[name^="income_type_"]').live('change', function() {
    alert($(this).val());
});

从jQuery 1.7开始,我已经将其更新为:

$('select[name^="income_type_"]').on('change', function() {
    alert($(this).val());
});

查看文档,这应该是完全有效的(对吗?)-但是事件处理程序永远不会触发。当然,我已经确认jQuery 1.7已加载并正在运行,等等。错误日志中没有错误。

我究竟做错了什么?谢谢!


问题答案:

on文档的状态(粗体)):

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

等效于.live()类似

$(document.body).on('change', 'select[name^="income_type_"]', function() {
    alert($(this).val());
});

尽管最好将事件处理程序绑定到尽可能靠近元素的位置,即绑定到层次结构中更靠近元素的位置,这样会更好。

更新: 在回答另一个问题时,我发现.live文档中也提到了这一点:

.live()就其后继者而言,重写该方法非常简单。这些是用于所有三个事件附件方法的等效调用的模板:

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+


 类似资料:
  • Using $.fn.is_match(selector) to build a live bind method: sample: <div class="kkkk"> <div class="ppp1" title="333">hello1</div> </div> <script>   function alr(){alert(this.innerHTML);}   function alr

  • 问题内容: 我最近将jQuery从1.8更新到了2.1。我突然发现这些停止工作。 我得到了错误。 有什么可以代替的方法吗? 问题答案: jQuery已从1.9版开始删除。 这意味着,如果您要从1.8版或更早版本进行升级,则如果不遵循以下迁移指南,将会发现事情中断了。您不能简单地将其替换为! 开始搜索并替换之前,请先阅读以下内容: 对于 快速/热补丁 上线的站点, 不 只是替换关键字用, 因为 参数

  • 问题内容: 我正在尝试通过jQuery AJAX调用预加载一些图像,但是在将(url)字符串传递到AJAX调用的成功函数内的函数时遇到了实际问题(如果有意义)。 这是我的代码,原样: 可以看到我(失败的)尝试将url传递到调用中- 最终得到了递增整数的值。不确定为什么或与这些东西有什么关系,也许是jpg文件的数量? …无论如何,它当然应该在我原始的urls数组中使用单个值。 感谢您的帮助-我似乎总

  • 本文向大家介绍谈一下Jquery中的bind(),live(),delegate(),on()的区别?相关面试题,主要包含被问及谈一下Jquery中的bind(),live(),delegate(),on()的区别?时的应答技巧和注意事项,需要的朋友参考一下 [jQuery] 谈一下Jquery中的bind(),live(),delegate(),on()的区别?

  • 问题内容: 我有一个主要使用Richfaces的JSF应用程序。我想介绍一个功能更丰富的网格控件,例如基于jQuery的jqgrid。是否可以从JSF支持bean获得JSON数据?如果没有,是否有替代方法? 问题答案: 这里可能有几个选择。 Bean方法可以返回一个字符串,它只是一个JSON字符串 您可以使用JsonLib将Java对象转换为Json。 使用其他Servlet服务网格请求 我将推荐

  • 现在,我正在使用Maven,我的静态文件夹在src/main/resources下,因此我的文件夹结构是: src/main/resources/statig/index.html 这是我的index.html文件中的内容: 为什么现场装弹对我不起作用?我做错了什么?