Checkbox.change()事件未在jQuery.when()内部触发
我有两个ajax函数,它们使用.getJSON获取JSON对象,然后使用这些对象的内容构建一个表和下拉菜单。这一切都很好。现在,我尝试将事件附加到表第一列中的每个复选框。当然,我希望在ajax调用完成后发生这种情况。JQuery的.when()函数似乎是一个很好的解决方案,因为它将等待两个ajax函数完成。下面是我的代码。我不确定我做错了什么。由于某些原因,.when函数内部的警报未触发。有人能指出我做错了什么吗Checkbox.change()事件未在jQuery.when()内部触发,jquery,Jquery,我有两个ajax函数,它们使用.getJSON获取JSON对象,然后使用这些对象的内容构建一个表和下拉菜单。这一切都很好。现在,我尝试将事件附加到表第一列中的每个复选框。当然,我希望在ajax调用完成后发生这种情况。JQuery的.when()函数似乎是一个很好的解决方案,因为它将等待两个ajax函数完成。下面是我的代码。我不确定我做错了什么。由于某些原因,.when函数内部的警报未触发。有人能指出我做错了什么吗 $(document).ready(function () { $.when(c
$(document).ready(function () {
$.when(createSpotsTable(), createMarketDropDown(1))
$('input:checkbox').click(function () {
$('input:checkbox').change(
alert("Hello world!")
);
});
});
您的代码似乎缺少一些内容。例如,您没有注册对
$返回的对象的任何回调。这意味着,当Ajax调用完成时,不会执行任何代码。相反,将立即执行$('input:checkbox')。单击(…)
。
当
阻止执行时,您可能认为,$,但事实并非如此。看一看这张照片
此外,您将警报
的返回值指定为事件处理程序,但必须将函数传递给.change
我想你想要的是:
$.when(createSpotsTable(), createMarketDropDown(1)).done(function() {
$('input:checkbox').change(function () {
alert("Hello world!")
});
});
但您不必使用$。当使用时,您可以使用事件委派:
createSpotsTable();
createMarketDropDown(1);
$(document).on('change','input:checkbox', function () {
alert("Hello world!")
});
使用实时事件
jQuery.getJSON('xyz.com',function(){
$('input:checkbox').live('click',function () {
// Do you processing.
})
});
谢谢不过,看起来live event已被弃用。谢谢你提醒我。您可能知道,使用“on”。为什么要在回调中使用live
?live
的优点是可以随时注册事件处理程序。因此,在进行Ajax调用之前,您应该这样做。谢谢Felix。这为我澄清了几件事。然而,在第二种方法中,我的Javascript控制台显示了以下“uncaughttypeerror:Object[Object Object]没有“on”方法”。它指的是jquery.js中的第19行。有什么想法吗?@hughesdan:您可能没有使用最新版本的jQuery;)是的,这确实是个问题。谢谢大家!+1回答问题中的问题。