Неправильно, если быть точным:
То, что «вернулось», очень важно. Это означает, что методы должны возвращать значение, и это значение должно быть назначено где-то.
Кроме того, это не совсем синтаксически эквивалентно версии if-else. Например:
String str1,str2,str3,str4;
boolean check;
//...
return str1 + (check ? str2 : str3) + str4;
Если кодировка с if-else всегда приведет к большему байт-коду.
Используя jQuery можно сделать это:
var cnt = $(".remove-just-this").contents();
$(".remove-just-this").replaceWith(cnt);
Быстрые ссылки на документацию:
Независимый от библиотеки метод должен вставить все дочерние узлы элемента, который будет удален перед собой (который неявно удаляет их из их старого положения) перед удалением его:
while (nodeToBeRemoved.firstChild)
{
nodeToBeRemoved.parentNode.insertBefore(nodeToBeRemoved.firstChild,
nodeToBeRemoved);
}
nodeToBeRemoved.parentNode.removeChild(nodeToBeRemoved);
Это переместит все дочерние узлы в корректное место в правильном порядке.
Необходимо удостовериться, что сделали это с DOM, не innerHTML
(и при использовании решения jQuery, предоставленного jk, удостоверьтесь, что это перемещает узлы DOM вместо того, чтобы использовать innerHTML
внутренне) для сохранения вещей как обработчики событий.
Мой ответ много похож на insin's, но будет работать лучше для больших структур (добавляющий каждый узел, отдельно может быть налоговым на перерисовках, где CSS должен быть повторно применен для каждого appendChild
; с DocumentFragment
, это только происходит однажды, поскольку это не сделано видимым, пока его дети все не добавляются, и это добавляется к документу).
var fragment = document.createDocumentFragment();
while(element.firstChild) {
fragment.appendChild(element.firstChild);
}
element.parentNode.replaceChild(fragment, element);
Какой бы ни библиотека, Вы используете Вас, должна клонировать внутреннее отделение прежде, чем удалить внешнее отделение из DOM. Тогда необходимо добавить клонированное внутреннее отделение к месту в DOM, где внешнее отделение было. Таким образом, шаги:
innerHTML
из внутреннего отделения к переменной, или можно скопировать внутреннее дерево рекурсивно узел узлом. removeChild
на родителе внешнего отделения с внешним отделением как аргумент. библиотеки Some сделают некоторых или все это для Вас, но что-то как вышеупомянутое будет продолжаться под капотом.
И, так как Вы попробовали в mootools также, вот решение в mootools.
var children = $('remove-just-this').getChildren();
children.replaces($('remove-just-this');
Примечание это полностью не тестируется, но я работал с mootools прежде, и это должно работать.
http://mootools.net/docs/Element/Element#Element:getChildren