我可能不是第一个注意到使用insertBefore& insertAfter,这些方法需要不同的语法。我希望有人可以解释原因。
这是我的(功能!)代码:
/* change the order of form elements */
function sendup(row) {
// needs to move two up. Step up to the containing span MT
var prevRow = $(row).prevAll('#checkboxSelect').first().get(0);
if(prevRow) {
row.parentNode.insertBefore(row, prevRow);
}
}
function senddown(row) {
$('#checkboxSelect').insertAfter()
// Step up to the containing span MT
var nextRow = $(row).nextAll('#checkboxSelect').first().get(0);
if(nextRow) {
$( row ).insertAfter( nextRow );
}
}
HTML / PHP循环创建复选框列表(如果相关):
<span id="checkboxSelect">
<input type="checkbox" name="field_group[]" id="$field" value="$field">$field<span style="float:right;"><a onclick="sendup(this.parentNode.parentNode)"><img src="icon_uparrow.png"></a> <a onclick="senddown(this.parentNode.parentNode)"><img src="icon_downarrow.png" border="0"></a></span><br>
</span>
由于缺乏相似性,使这个Jquery功能化很痛苦。
答案 0 :(得分:2)
实际上insertBefore和insertAfter在jQuery中具有相同的签名。虽然您使用的是纯js insertBefore,但它不是jQuery函数。