所以我有一個表格顯示每行有2個複選框的表格。提交表單時,我試圖對至少有一個複選框選中到後端的行進行ajax操作。在javascript數組中檢測重複的jquery元素
標記:
<form id="my_form">
<table>
<tr data-id="1">
<td><input type="checkbox" class="js-option-1"></td>
<td><input type="checkbox" class="js-option-2"></td>
</tr>
<!-- etc -->
</table>
</form>
所以,我有一個事件處理程序,試圖建立對象的數組發送到後端:
$("#my_form").live 'submit', (event) ->
event.preventDefault()
rows = []
$("input:checked").each() ->
rows.push row
objects = []
$.each objects, (index, value) ->
object = {
id: $(@).attr("data-id")
option_1: $(@).find("js-option-1").val()
option_2: $(@).find("js-option-2").val()
}
objects.push object
# ajax code
的問題,當然,如果兩個選項被選中,我最終得到了數組中的兩個對象,從而發送了數據。
我試圖通過嘗試檢測重複來解決這個問題兩個陣列上,而忽略推在這種情況下:,
$("input:checked").each() ->
row = $(@).closest("tr")
if $.inArray(row, rows) == -1 #if no duplicate
rows.push row
# or
if $.inArray(object, objects) == -1
objects.push object
這兩種方法失敗了,但是因爲我承擔機制比較對象文字和jquery對象導致它們被認爲不相等,即使它們在所有通常方面都是相同的。任何其他想法?
你明白'live'已棄用多年,並*刪除*在V1.9 ... –
比較原始的DOM節點 – adeneo
如果兩個複選框都會被檢查,您發送的是冗餘數據......爲什麼不使用單選按鈕,那麼您根本不需要檢查? – ToastyMallows