2017-10-15 14 views
0

J'ai besoin d'accéder à un élément créé dynamiquement avec jQuery. Mon code html est comme suit:Accès à un élément créé dynamiquement avec jQuery

<div class="row" id="divRowBtnAdd"> 
    <div class="form-group col-md-5" id="divBtnAddRow"> 
     <button type="button" class="btn btn-info btn-xs" id="btnAddRow"> 
     Click for another radius and diameter line 
     </button> 
    </div> 
</div> 

L'élément est créé en utilisant la fonction .avant() jQuery:

$("#btnAddRow").click(function() { 
$("#divRowBtnAdd").before('<div class="row" id="radiusDiameter">' + 
'<div class="form-group col-md-2">' + 
' <label for="radius">Radius</label>' + 
' <input type="number" class="form-control" step="0.1" id="radius" placeholder="Radius">' + 
'</div>' + 
'<div class="form-group col-md-2">' + 
' <label for="diameter">Diameter</label>' + 
' <input type="number" class="form-control" step="0.1" id="diameter" placeholder="Diameter">' + 
'</div>' + 
'<div class="form-group col-md-4">' + 
' <br/> <input type="button" class="btn btn-danger" value="Delete line" id="btnCloseDivCurva"/>' + 
'</div>' + 
'</div>') 
}); 

Les éléments sont créés avec succès, mais quand je cours:

var count = $("#radiusDiameter").length; 

la valeur renvoyée est toujours 1, pas la valeur des éléments créés +1 ...

+0

Vous devez lever la portée et utiliser la délégation d'événement. –

+0

Copie possible de [Liaison d'événement sur des éléments créés dynamiquement?] (Https://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) –

Répondre

1

Vous ne pouvez pas avoir plus d'un élément avec le même id. Au lieu de cela, ajoutez-le avec une classe de radiusDiameter, puis utilisez un sélecteur comme celui-ci.

var count = $(".radiusDiameter").length; 
+0

Cela a résolu mon problème, merci beaucoup! J'ai eu la notion de ne pas pouvoir utiliser le même identifiant, mais je ne savais pas que lorsque j'utiliserais la valeur dans la classe, le résultat serait attendu, merci! –