我有一个嵌套列表,其中包含任意数量的 li 和任意数量的 li,其中每个 li 都有 2 个隐藏输入:一个 id 和一个父级的 id。
<ul>
<li>
<input type="hidden" name="question[id][]" value="'. $sub['id'] .'" />
<input type="hidden" name="question[parent][]" value="'. $question['id'] .'" />
<ul>
<li>
<input type="hidden" name="question[id][]" value="'. $sub['id'] .'" />
<input type="hidden" name="question[parent][]" value="'. $question['id'] .'" />
</li>
</ul>
</li>
<li>
<input type="hidden" name="question[id][]" value="'. $sub['id'] .'" />
<input type="hidden" name="question[parent][]" value="'. $question['id'] .'" />
<ul>
<li>
<input type="hidden" name="question[id][]" value="'. $sub['id'] .'" />
<input type="hidden" name="question[parent][]" value="'. $question['id'] .'" />
</li>
</ul>
<ul>
<li>
<input type="hidden" name="question[id][]" value="'. $sub['id'] .'" />
<input type="hidden" name="question[parent][]" value="'. $question['id'] .'" />
</li>
</ul>
</li>
</ul>
我正在使用 jQuery sortable 对嵌套列表进行排序,现在在对它们进行排序之后,我需要将适当的父 ID 保存到子列表中的每个项目中。
理论上每个子问题的父 id 是第二个最接近的 ul 的第一个输入的值。另外,如果没有父ul,那么我想将父id设置为0。如何找到它?这是我到目前为止所拥有的:
$('#reorder_form').submit(function(){
$('li').each(function() {
$id = $(this).closest('ul').closest('li').find("input[name='question[id]']").val();
if(typeof($id) == 'undefined') $id=0;
$(this).find("input[name='question[parent]']").val($id);
});
});
我不是 100% 确定这就是你正确循环每个输入的方式,因为我每个输入两次。也许我应该循环遍历 li 的?