Я, вероятно, не первый, кто заметил, что при использовании insertBefore & insertAfter методы требуют различного синтаксиса. Я надеялся, что кто-то сможет объяснить, почему.JQuery отсутствие сходства между 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 функционал был болезненным из-за этого недостатка сходства.
[$ .fn.insertBefore] (http://api.jquery.com/insertBefore/) и [$ .fn.insertAfter] (http://api.jquery.com/insertAfter/) имеют очень похожий синтаксис , проблема в том, что вы используете собственный DOM [Node.insertBefore] (https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore), который имеет другой порядок параметров. – Waxen