2010-11-09 123 views
3

嗨 我想在jQuery下拉框中替換div。被替換的值是下拉框的「標題」,當沒有任何內容被選中時,該標題顯示「Pick alternative:」。然後,當用戶從下拉菜單中選擇替代選項時,該選項會突出顯示,並替換「選擇替代項:」,以便用戶可以在關閉下拉菜單時查看他們選擇的內容。jQuery替換元素的文本

我該怎麼做? 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>    

我有以下幾行javaScript。我不知道如何繼續這樣做。

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

我得到它來代替我想替換的東西,但它只是顯示「[Object object]」。 感謝您的閱讀!

* bold *編輯:有人可以再投一遍這個問題,所以我可以開始upvoting你的答案?我覺得你值得讚美!

回答

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

使用val()INPUT元件(一個按鈕是INPUT元件)和html()text()用於非INPUT元件。

你得到[Object object]的原因是因爲當你簡單地做$(this)並將它連接到一個字符串時,你正在調用jQuery對象的toString(),它不會返回你想要的。您需要使用val()獲得的按鈕的實際文本。

+0

這將得到錯誤的文字。 – 2010-11-09 15:13:09

+0

@Nick爲什麼會出錯?它沒有得到點擊按鈕的文本? – 2010-11-09 15:13:59

+0

nope,因爲它是''它沒有文字。 – 2010-11-09 15:14:58

1

使用.val()獲得點擊<input>元素的值,比如:

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

在這種情況下this<input>你想要的,但$(this)是一個jQuery object..which給出[Object object]一個.toString(),你想要.val()來獲得價值。