2014-11-25 2 views
-3

Я, вероятно, не первый, кто заметил, что при использовании 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>&nbsp;<a onclick="senddown(this.parentNode.parentNode)"><img src="icon_downarrow.png" border="0"></a></span><br> 
</span> 

Создание этого Jquery функционал был болезненным из-за этого недостатка сходства.

+2

[$ .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

ответ

2

Фактически insertBefore и insertAfter имеют такую ​​же подпись в jQuery. Хотя вы используете чистый js insertBefore, который не является функцией jQuery.

Смежные вопросы