Проблема с jQuery - PullRequest
       30

Проблема с jQuery

0 голосов
/ 26 октября 2010
if ( !this.labelContainer.append(label).length )
 this.settings.errorPlacement
  ? this.settings.errorPlacement(label, $(element) )
  : label.insertAfter(element);

(этот код взят из плагина validate, он повторяется для каждого входа)

label - это <label>text</label>

element - это <input />

Это хорошо работает, добавляет label сразу после element.

выглядит так:

<dd>
    <div>
        <input />
        <label>text</label>
    </div>
</dd>

Как поставить label после <div> (родитель element), а не element?

Полный код скрипта:

http://www.jsfiddle.net/YSSCE/1/ (поиск label.insertAfter(element))

Ответы [ 3 ]

2 голосов
/ 26 октября 2010

Использование insertAfter. Пример для jsFiddle.

$("<label />").text("Label").insertAfter(
    $("input").parent()
);

Обновление вашего кода (v2) :

this.settings.errorPlacement
      /* not sure what this method do, maybe you need to add .parent() as well*/
    ? this.settings.errorPlacement(label, $(element) )
    : label.insertAfter($(element).parent()); /* insert after the parent */
0 голосов
/ 26 октября 2010

Изменить label.insertAfter (элемент) на label.insertAfter (element.parent ())

Но это может вызвать проблемы, если ваша HTML-разметка изменится.

0 голосов
/ 26 октября 2010

element.parent возвращает родителя для элемента.

label.insertAfter(element.parent);

или, возможно,

label.insertAfter($(element).parent);
...