我沒有專門使用jQuery UI Selectable插件,但我只是完成了與您所描述的內容非常類似的事情,所以我會提供我的2分錢。如果有很多屬性決定了針對給定對象可採取的操作,我會建議在每行(或div,或者您正在放置這些表單)中放置一個表單,以提供所需的所有屬性,以確定哪些可以採取行動。這將允許您利用jQuery的.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對象數組來處理。
我不確定這是否是最好的方式去解決這個問題,但它對我有用。
就最後提交數據而言,只要點擊動作按鈕,然後對它執行.trigger('submit')操作,只需使用jQuery創建一個新表單,如果您不想使用AJAX 。
這也是我第一次提交答案,所以我希望它通過格式化得到足夠的理解。