2011-06-02 5 views
1

J'essaie d'activer un slideDown() onclick avec un élément qui a été généré par js.Comment sélectionner un élément généré par jQuery?

J'ai téléchargé un script de ryanfait.com qui vous permet de personnaliser l'apparence des boutons radio. Cela fonctionne bien, mais quand j'essaie d'appliquer une action à l'élément généré (dans ce cas, un span) cela ne fonctionne pas. Comment puis-je contourner cela?

Voici mon HTML:

<div class="radiocont"> 
           <label>Yes</label> 
           <input type="radio" class="styled" value="yes" name="watertank" /> 
          </div> 
          <div class="radiocont"> 
           <label>No</label> 
           <input type="radio" class="styled" value="no" name="watertank" /> 
          </div> 

Lorsque les DOM charge les entrées sont remplacées par des travées qui ressemblent à ceci: <span class="radio" title="yes" style="background-position: 0pt 0pt;"></span>

Lorsque vous cliquez sur l'une des travées je veux activer slideDown(). Voici mon js: $('[title="yes"]').click(function() { $(this).nextAll('.secondq:first').slideDown('slow'); });

Quelqu'un peut-il aider?

+0

Vous devez vous assurer que la fonction de clic est binded après les travées ont été permutées. Vous pouvez essayer de .live de jquery() – Ben

Répondre

6

Utilisez .live ou .delegate à "Joignez un gestionnaire à l'événement pour tous les éléments qui correspondent au sélecteur actuel, maintenant et dans le futur."

// .live() 
$('[title="yes"]').live("click", function() { 
    $(this).nextAll('.secondq:first').slideDown('slow'); 
}); 

// .delegate() (not entirely sure of your structure, the below may need 
// to be modified accordingly 
$('.radiocont').delegate("span[title='yes']", "click", function() { 
    $(this).nextAll('.secondq:first').slideDown('slow'); 
}); 
+1

+1 pour mentionner 'delegate', ce qui serait mieux pour ce scénario si toutes les entrées sont contenues avec le div 'radiocont'. – Town

+0

Cela fonctionne: '$ ('de radiocont. ') En direct ("clic", function() { $ (this) .nextAll (' secondq:. Premier.) SlideDown (' slow'); }). ' mais comme vous pouvez voir que l'aide de la div parent à la durée générée. Quand je l'applique à 'durée [title = « yes »]' il ne fonctionne pas? –

+0

Pas de soucis à résoudre! Je vous remercie! : o) –

Questions connexes