2009-08-02 5 views
1

J'ai créé une liste d'éléments. si un élément est mis en surbrillance (en utilisant les boutons 'prev' et 'next'), il obtient la classe 'active'. Si le bouton 'ajouter un élément' a été enfoncé, l'élément reçoit la classe 'sélectionné'. mais si un élément actif est également sélectionné, je veux remplacer «ajouter un bouton» par «supprimer un bouton» - ce qui supprime la classe «sélectionnée» de l'élément actif.jquery - remplacement du bouton <a> dans des circonstances définies

est ici un code:

if ($('.active').hasClass('selected')) { 
     $('.add').replaceWith('<a href="#" class="add">Usuń zdjęcie</a>'); 
     $('.add').click(function() { 
      $('.active').removeClass('selected'); 
      return false; 
     }); 
    } 
    else { 
     $('.add').click(function() { 
      $('.active').addClass('selected'); 
      return false; 
     }); 
    } 

il ne fonctionne pas (change rien). Qu'est-ce qui ne va pas? : |

+0

Quelle erreur/moyen obtenez-vous? – jammus

Répondre

1

Je ne suis pas tout à fait sûr, mais je pense que le problème est que le code est dans le bloc prêt, je pense que peut-être vous devez déplacer le


$('.add').replaceWith('Usuń zdjęcie'); 
$('.add').click(function() { 
    $('.active').removeClass('selected'); 
    return false; 
}); 

partie au


$('.add').click(function() {}); 

Comme actuellement le code ne prend effet que si les classes ont la classe "selected" au chargement de la page, pas si elles sont ajoutées plus tard.

Hope that helps ...

+0

merci, ça marche :) –

0

Le code est-il appelé uniquement lors du chargement de la page? Si c'est le cas, le code à l'intérieur du bloc else ne sera jamais exécuté.

+0

oui c'est dans $ (document) .ready(); bloquer, mais le problème est que les actions 'else' sont toujours exécutées –

Questions connexes