我正在使用jQuery和jQuery UI,我试图通过添加“aria-pressed”属性来读取复选框状态,jQuery UI Button在false和true之间切换。
$('.slideButton').live('click', function() {
alert($(this).attr('aria-pressed'));
});
然而,这个代码似乎在jQuery UI更新了aria-pressed之前读取了aria-pressed。所以我的价值不可靠。我可以安排它在UI更新后执行,还是可以让它等待?
答案 0 :(得分:1)
你不能在标签或跨度后面的实际复选框中添加一个监听器吗?
$("#days_list li div div div input[type='checkbox']").change(function(){
alert("Someone just clicked checkbox with id"+$(this).attr("id"));
});
这应该有效,因为一旦您点击标签,您就会更改复选框中的值。
好吧,我为你编写了一个live example,它展示了它如何工作的一般概念,以及你如何检索复选框的状态。
$("#checkbox_container input").change(function(){
if($(this).is(":checked")) alert("Checked!");
else alert("Unchecked!");
});
在你的情况下,由于复选框是由JQuery动态添加的,你必须使用live事件,但它基本上是一样的
$("#checkbox_container input").live("changed"....
Here's an example进行了一些额外的脚本和检查,主要用于演示目的。
答案 1 :(得分:0)
切换完成后,您可以使用回调来执行alert($(this).attr('aria-pressed'));
。
$('.slidebutton').toggle(1000, function(){
alert($(this).attr('aria-pressed'));
});
我不太确定你是否使用.toggle()
,但是你需要使用回调来确保顺序执行。