2011-09-23 61 views
0

我正在使用jQuery和jQuery UI,我試圖通過添加jQuery UI按鈕在false和true之間切換的「aria-pressed」屬性來讀取複選框狀態。如何在UI更新之前延遲.live()?

$('.slideButton').live('click', function() { 

alert($(this).attr('aria-pressed')); 

}); 

但是這段代碼似乎讀取了jQuery UI更新了aria-pressed之前的aria-pressed。所以我不可靠的價值觀。我可以安排它在UI更新後執行,還是可以讓它等待?

Live example here!

+0

你爲什麼要通過'aria-pressed'來閱讀複選框狀態? –

+0

我想獲取複選框所在的狀態。我不知道任何其他方式:( – Coral

+0

可能想查看[jQuery:checked selector](http://api.jquery.com/checked-selector /) –

回答

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動態添加你要使用實時事件,但它基本上是同樣的事情

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

Here's an example有一些額外的腳本和檢查,主要是爲示範目的。

+0

似乎並不是因爲它被AJAX加載的內容所致,但我可以使用live作爲更改事件嗎? – Coral

+0

它適用於live('changed'....但是我怎麼能知道按鈕被點擊後的狀態? – Coral

+0

要檢查它有哪個狀態,可以使用'$(this).attr(「checked」)',它可以返回'undefined'或'checked'。 – ShadowScripter

0

您可以使用一個回調切換完成後執行alert($(this).attr('aria-pressed'));

$('.slidebutton').toggle(1000, function(){ 

    alert($(this).attr('aria-pressed')); 
}); 

我如果您使用.toggle()或沒有,但你需要使用一個回調兩種方式,以確保順序執行不太清楚。

+0

我是通過AJAX調用動態添加所有按鈕,所以它似乎不起作用。這就是爲什麼我首先使用live()(至少我認爲我必須使用live())。使用切換作爲live()事件? – Coral

相關問題