2010-11-09 87 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()来获得价值。