2010-10-26 7 views
0
if (!this.labelContainer.append(label).length) 
this.settings.errorPlacement 
    ? this.settings.errorPlacement(label, $(element)) 
    : label.insertAfter(element); 

(ce code est de plugin validate, il répète pour chaque entrée)problème avec jQuery

label est <label>text</label>

element est <input />

Cela fonctionne bien, il ajoute label directement après le element.

ressemble à ceci:

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

Comment placer label après (parent de element) <div>, pas après la element?

Code complet du script:

http://www.jsfiddle.net/YSSCE/1/ (recherche label.insertAfter(element))

+0

'label.insertAfter (élément);' 'dans label.insertAfter (div);' 'où div' est l'identifiant de la' div' vous voulez insérer après. – Shikiryu

+0

@Chouchenos ne fonctionne pas. – James

+0

woo ... J'adore l'expression "je ne travaille pas"! Cela rend les choses plus rapides et plus claires! – Shikiryu

Répondre

2

Utilisez insertAfter. Example on jsFiddle.

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

Updating your code (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

Pouvez-vous mettre à jour votre solution à mon code? Voici un fichier complet http://www.jsfiddle.net/YSSCE/1/ – James

0

element.parent obtient le parent à l'élément.

label.insertAfter(element.parent); 

ou peut-être

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

changement label.insertAfter (élément) à label.insertAfter (element.parent())

Mais cela pourrait causer des problèmes si vos changements de balisage HTML.

+0

Ne fonctionne pas. Code complet téléchargé http://www.jsfiddle.net/YSSCE/1/ – James

+0

Il supposait que l'élément est un objet jQuery. Cela aurait dû être supposé que la fonction parent() est une fonction jQuery. –