Я не использовал плагин jQuery UI Selectable специально, но я только что закончил разработку чего-то очень похожего на то, что вы описываете, поэтому я предложу свои 2 цента на нем.Если существует множество свойств, которые определяют действия, доступные для выполнения с данным объектом, я бы рекомендовал поместить в каждую строку форму (или div, или как вы их планируете), которая предоставляет все свойства, необходимые для определения того, какиедействия могут быть предприняты.Это позволит вам воспользоваться методом jseu's .serializeArray (), который довольно полезен.Поэтому, если у вас есть строка таблицы для каждого объекта, она может выглядеть примерно так:
<table>
<tr>
<td>
<form>
<input type="checkbox" name="id" value="1" />
<input type="hidden" name="color" value="red" />
<input type="hidden" name="size" value="large" />
</form>
</td>
</tr><tr>
<td>
<form>
<input type="checkbox" name="id" value="2" />
<input type="hidden" name="color" value="orange" />
<input type="hidden" name="size" value="small" />
</form>
</td>
</tr>
</table>
В зависимости от того, когда вы хотите запустить свою логику, которая определяет, какие действия могут быть предприняты (например, после каждого разафлажок установлен) ваш javascript может выглядеть примерно так:
$(function(){
$('[name="id"]').bind('click', function(){
var actionableObjects = [];
$.each( $('[name="id"]'), function(){
if($(this).is(':checked')){
var obj = {},
arr = $(this).parents('form:first').serializeArray();
$.each(arr, function(index, p){ obj[p.name] = p.value; })
actionableObjects.push( obj );
}
})
updateActionIcons( actionableObjects );
})
})
Это должно дать вам хороший чистый массив JSON-объектов для работы.
Я не уверен, если этоэто лучший способ, но у меня это сработало.
Что касается отправки данных в конце, я бы просто создал новую форму с jQuery после нажатия кнопки действия и выполнил бы .trigger ('submit'), если вы не хотитеиспользуйте AJAX.
Я также впервые представляю ответ, поэтому надеюсь, что он был отформатирован достаточно хорошо, чтобы иметь смысл.