Checkbox .change()事件没有在jQuery内部触发.when()

时间:2012-01-26 17:18:50

标签: jquery

我有两个使用.getJSON获取JSON对象的ajax函数,然后使用这些对象的内容构建一个表和下拉菜单。这很好。现在,我正在尝试将事件附加到位于表的第一列中的每个复选框。当然,我希望在ajax调用完成后发生这种情况。 JQuery的.when()函数似乎是一个很好的解决方案,因为它会等到两个ajax函数都完成。以下是我的代码。我不确定我做错了什么。由于某种原因,.when函数内部的警报不会触发。有人可以指出我做错了吗?

$(document).ready(function () {

$.when(createSpotsTable(), createMarketDropDown(1))
$('input:checkbox').click(function () {
    $('input:checkbox').change(
       alert("Hello world!")
    );
});

});

2 个答案:

答案 0 :(得分:1)

看来你的代码遗漏了一些东西。例如,您没有注册$.when返回的对象的任何回调。这意味着,当Ajax调用完成时,不会执行任何代码。相反,$('input:checkbox').click(...)将立即执行 也许您认为$.when阻止了执行,但事实并非如此。看看documentation

此外,您将{{1>}的返回值指定为事件处理程序,但您必须将函数传递给alert。< / p>

我认为你想要的是:

.change

但您不必使用$.when(createSpotsTable(), createMarketDropDown(1)).done(function() { $('input:checkbox').change(function () { alert("Hello world!") }); }); ,您只需使用事件委派:

$.when

答案 1 :(得分:0)

使用直播活动,

jQuery.getJSON('xyz.com',function(){
  $('input:checkbox').live('click',function () {
   // Do you processing.
  }) 
});