こんにちは、ソート可能なアコーディオン ( http://jqueryui.com/accordion/#sortable ) をノックアウト js の "data-bind: foreach" ループと一緒に使用したいと考えています。
ループごとに一意の「ID」が必要ですが、jQuery が処理するためにそれを生成するにはどうすればよいですか?
ノックアウトコード:
self.Tasks = ko.observableArray(); // has TaskId, Taskname, Description...
HTML アコーディアン:
<div id="accordion" data-bind="foreach: Tasks">
<div id="THIS HAS TO BE DYNAMICALLY GENERATED???" class="group">
<h3><b><span data-bind="text: Taskname"></span></b></h3>
<div>
<textarea name="Description" data-bind="value: Description"></textarea>
</div>
</div>
</div>
JavaScriptは次のとおりです。
$(function() {
$( "#accordion" )
.accordion({
header: "> div > h3"
})
.sortable({
axis: "y",
handle: "h3",
stop: function( event, ui ) {
var items=[];
ui.item.siblings().andSelf().each( function(){
//compare data('index') and the real index
if($(this).data('index')!=$(this).index()){
items.push(this.id);
}
});
// IE doesn't register the blur when sorting
// so trigger focusout handlers to remove .ui-state-focus
ui.item.children( "h3" ).triggerHandler( "focusout" );
// Print out the sequence of tasks for further processing
if(items.length) $("#sequence").text(items.join(','));
ui.item.parent().trigger('stop');
}
})
.on('stop',function(){
$(this).siblings().andSelf().each(function(i){
$(this).data('index',i);
});
})
.trigger('stop');
});
私の一部は、これは簡単なはずだと言っていますが、明らかにそれを理解するには太りすぎです。誰か良い考えがありますか?