我正在處理一個列表,其中的項目都是可選擇的(使用複選框)和可排序的(使用jquery'sortable')。jquery ui可排序列表不跟蹤列表項目屬性的更新
名單如下:
<ul id="dragdrop">
<li id="1290"><input type="checkbox" id="290" checked class="slideToggle" /><img ... /></li>
<li id="1291"><input type="checkbox" id="291" checked class="slideToggle" /><img ... /></li>
</ul>
...和JavaScript是這樣的:
$(".slideToggle").click(function() {
var slideId = $(this).attr("id");
var checked = $(this).attr("checked");
if (slideId) {
$.post("ToggleInclusion", { "slideId": slideId, "isChecked": checked },
function() {
var newId = checked ? "1" : "0" + slideId;
$(this).parent().attr("id", newId);
});
}
});
$("#dragdrop").sortable({
update: function() {
var order = $(this).sortable("toArray").toString();
$.post("UpdateOrder", { "order": order }, function() { });
}
});
因此,當用戶未檢查的複選框,比如說,第二個項目(id = 291),其列表項更改爲
<li id="0291" ... ></li>
我遇到的問題是此更改不是由可排序列表捕獲。當第二項未選中,然後拖到第一項之前的位置時,發送到服務器的訂單字符串應爲「0291,1290」時爲「1291,1290」。
我已經嘗試撥打電話到$("#dragdrop").sortable("refresh")
和朋友都在切換回調結束,也就在排序更新後,但沒有骰子。
任何想法?
謝謝,但不幸的是這並沒有這樣做。停止事件的使用和手動連接都不會捕獲更新後的ID屬性。我真的很驚訝,做$('#dragdrop li')。每個(...)都沒有選擇正確的id值,我想有一些更重要的東西我失蹤了,事實上,列表項的屬性僅在頁面加載時才被緩存,因此在此之後不能更新?當我取消選中某些框並刷新頁面和_then_重新排序時,更新的屬性就會被拾取。 – Dave 2011-05-06 14:46:22