@websiteserf

Как решить проблему с методом jquery .before()?

Вот кусок плагина для создания Placeholder.

В оригинале все блоки div placeholder он вставляет в конец body:

var body = $(document.body);
        this.each(function(indx, element){
            if ($(this).attr('placeholder') !== "") {
                var template = '<div class="placeholder" style="position:absolute;overflow:hidden;white-space:nowrap;cursor:text;"/>',
                    self = $(this),
                    pos = self.offset(),
                    height = self.height(),
                    width = self.width(),
                    ph_text = self.attr('placeholder'),
                    placeholder = $(template)
                                            .appendTo(body)
                                            .text(ph_text)
                                            .css({
                                                top: pos.top,
                                                left: pos.left,
                                                width: width,
                                                height: height,
                                                padding: ((self.outerHeight() - height) / 2) + 'px ' +  ((self.outerWidth() - width) / 2) + 'px '
                                            });


Но мне нужно чтоб он выставлял блоки с Placeholder'ми перед самими полями ввода Input[placeholder].

Я осмелился подменить:

placeholder = $(template)
                                            .appendTo(body)


на:

placeholder = $(template)
                                            .before(self)


Но этот метод полностью уничтожает коды полей, ни подсказок, ни полей (jsfiddle.net/mw5Ge - оригинал /// jsfiddle.net/Pb6Mz - переделано). Я даже понятия не имею, что за ошибка.
  • Вопрос задан
  • 2807 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
GeneMoss
@GeneMoss
void
Используйте insertBefore вместо before. Параметром для before является контент, который вставлять, а не цель, куда вставлять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы