如何延迟.live()直到UI更新

How to delay .live() until UI has updated?

本文关键字:更新 直到 UI live 延迟 何延迟      更新时间:2023-09-26

我正在使用jQuery和jQuery UI,我正试图通过添加jQuery UI按钮在false和true之间切换的"aria-pressed"属性来读取复选框状态。

$('.slideButton').live('click', function() {
alert($(this).attr('aria-pressed'));
});

这段代码似乎在jQuery UI更新aria-pressed之前读取aria-pressed。所以i是不可靠的值。我可以安排它在UI更新后执行,还是可以让它等待?

现场示例在这里!

不能在标签或span后面的实际复选框中添加侦听器吗?

$("#days_list li div div div input[type='checkbox']").change(function(){
     alert("Someone just clicked checkbox with id"+$(this).attr("id"));
});

这应该可以工作,因为一旦你点击标签,你就改变了复选框中的值。


好了,我已经为您编写了一个实时示例,演示了它如何工作的一般思想,以及如何检索复选框的状态。

$("#checkbox_container input").change(function(){
    if($(this).is(":checked")) alert("Checked!");
    else alert("Unchecked!");
});

在你的例子中,因为复选框是由JQuery动态添加的,所以你必须使用活动事件,但它基本上是一样的

$("#checkbox_container input").live("changed"....

下面是一个带有一些额外脚本和检查的示例,主要用于演示目的。

您可以在切换完成后使用回调来执行alert($(this).attr('aria-pressed'));

$('.slidebutton').toggle(1000, function(){
    alert($(this).attr('aria-pressed'));
});

我不太确定你是否使用.toggle(),但你需要使用回调来确保顺序执行。