jquery - 在 jQuery 中委托(delegate)就绪事件

标签 jquery

我正在尝试实现 combobox在一个以 ajax 加载 select 字段的表单上。

我想打电话:

$('.combobox').combobox();

当新的组合框准备就绪时。

目前,我将其放入我的 ajax 响应中:

<script type="text/javascript">
  $(document).ready(function() {
    $('.combobox').combobox();
  });
</script>

这可行,但在资源方面看起来很糟糕。因此,我正在寻找一种更好的方法来处理 ready 事件。

我尝试过:

 $('.combobox').live('ready', function() {
     $(this).combobox();
 });

但稍后会发现 live() 不支持 ready 事件。

然后,我尝试了:

    $('body').delegate('.combobox', 'ready', function() {
        $(this).combobox();
    });

但它也不起作用。

所以问题是:在 jquery 中处理选择器上当前和 future 就绪事件的最佳方法是什么?

最佳答案

没有理由将就绪事件绑定(bind)到文档以外的任何内容。

事实上,jQuery 会接受您放置在 .ready 之前的任何其他选择器并忽略它。

.ready 有一个内置的 Promise 对象,您可以将其与 .done() 一起使用作为替代方案。

$.ready.promise().done(function(){
    $('.combobox').combobox();
});

或者你可以简单地使用

$(function(){
    $('.combobox').combobox();
});

$(document).ready(function(){
    $('.combobox').combobox();
});

promise 版本的好处是你可以像这样使用它:

$.when( $.ready, $.post("foobar.php") ).done(function() {
    $(".combobox").combobox();
})

关于jquery - 在 jQuery 中委托(delegate)就绪事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936437/

相关文章:

jquery - .addClass - 如何从链接的 CSS 调用 CSS?

javascript - “Uncaught TypeError: undefined is not a function”

javascript - 让元素的子元素单独但按顺序设置动画

javascript - 将来自 ajax 调用的 PHP 链接数据发送到不同的页面 onclick

jquery - 悬停时不显示弹出窗口

javascript - 我如何知道通过 jQuery 选择了哪个单选按钮?

jquery - 为什么此代码会将表单输入发送到 URL?

JavaScript 习语 : create a function only to invoke it

jquery - 下载文件时如何显示和删除正在加载的 .gif?

Javascript 推送方法