2010-11-09 8 views
3

Salut Je suis en train de remplacer un div dans une liste déroulante jQuery. La valeur à remplacer est l'en-tête de la liste déroulante qui indique "Choisir une alternative" lorsque rien n'est sélectionné. Ensuite, lorsque l'utilisateur choisit une alternative dans la liste déroulante, cette alternative est mise en surbrillance et remplace également «Choisir une alternative:» afin que l'utilisateur puisse voir ce qu'il a choisi lors de la fermeture de la liste déroulante.jQuery remplacer le texte de l'élément

Comment est-ce que je ferais ceci? Le code HTML:

<div class="step_content"> 
     <div class="vertical_text">Choose alternative</div> 
     <div class="vertical_content dropdown_fade"> 
      <div class="menu_corner top_left_vertical"></div> 
      <div class="menu_corner top_right_vertical"></div>                  
      <div class="button_slide" rel="slide1">Pick alternative:</div> 
      <div class="content_slide slide1"> 
       <input id="Button19" class="button_vertical damage_button" type="button" value="Alternative 1" size="10px" /> 
       <input id="Button20" class="button_vertical damage_button" type="button" value="Alternative 2" /> 

      </div>            
      <div class="menu_corner bottom_left_vertical"></div> 
      <div class="menu_corner bottom_right_vertical"></div>     
     </div>     
    </div>    

Je les lignes de code JavaScript suivant. Je ne suis pas sûr de savoir comment continuer à faire ça.

$(function() { 
     $('.damage_button').click(function() { 
      $('.button_slide').replaceWith("<div class='some_class' >" + $(this) + "</div>"); 
     }); 
}); 

Je l'ai pour remplacer ce que je veux être remplacé mais il montre juste "[Object object]". Merci d'avoir lu!

* gras * Modifier: Est-ce que quelqu'un peut voter cette question encore une fois pour que je puisse commencer à voter pour vos réponses? Je pense que vous méritez les félicitations!

Répondre

1
$(function() { 
     $('.damage_button').click(function() { 
      $('.button_slide').replaceWith("<div class='some_class' >" + $(this).val() + "</div>"); 
     }); 
}); 

Utilisation val() pour INPUT éléments (un bouton est un élément INPUT) et html() ou text() pour un INPUT non éléments.

La raison pour laquelle vous obtenez [Object object] est parce que quand vous faites simplement $(this) et concaténer à une chaîne, vous appelez toString() de l'objet jQuery qui ne retourne pas ce que vous voulez. Vous voulez le texte actuel du bouton, que vous obtenez en utilisant val().

+0

Vous obtiendrez le mauvais texte. –

+0

@Nick pourquoi aurait-il tort? N'obtient-il pas le texte du bouton cliqué? –

+0

non, puisque c'est un '' il n'a pas de texte. –

1

Utilisez .val() pour obtenir le clic la valeur de l'élément <input>, comme ceci:

$(function() { 
    $('.damage_button').click(function() { 
    $('.button_slide').replaceWith("<div class='some_class' >" + $(this).val() + "</div>"); 
    }); 
}); 

Dans ce cas this fait référence à la <input> vous voulez, mais $(this) est un jQuery object..which donne une .toString() de [Object object], vous voulez .val() pour obtenir la valeur.