我正在尝试在ajax中加载select
字段的表单上实现combobox。
我想打电话:
$('.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中处理选择器上当前和未来就绪事件的最佳方法是什么?
答案 0 :(得分:2)
没有理由将ready事件绑定到文档以外的任何内容。
实际上,jQuery会将.ready
之前放置的任何其他选择器都忽略它。
.ready
有一个内置的承诺对象,可以与.done()
一起使用。
$.ready.promise().done(function(){
$('.combobox').combobox();
});
或者你可以简单地使用
$(function(){
$('.combobox').combobox();
});
或
$(document).ready(function(){
$('.combobox').combobox();
});
承诺版本的好处是您可以像这样使用它:
$.when( $.ready, $.post("foobar.php") ).done(function() {
$(".combobox").combobox();
})