2011-10-15 63 views
2

讓我們說我有休耕的HTML結構 -我如何找到最接近的跨度?

<div data-theme="a" class="ui-btn ui-btn-icon-right ui-btn-corner-all ui-shadow ui-btn-up-a"> 
    <span class="ui-btn-inner ui-btn-corner-all"> 
     <span class="ui-btn-text">Select One</span> 
     <span class="ui-icon ui-icon-arrow-d ui-icon-shadow"> 
     </span> 
    </span> 
    <select onchange="selectState(this,'ADDR_SHIP_STATE')" id="ADDR_SHIP_STATE" name="ADDR_SHIP_STATE"> 
     <option>Hi</option> 
     <option>Hello</option> 
     <option>How</option> 
     <option>are</option> 
     <option>you</option> 
    </select> 
</div> 

是選擇框改變什麼,我試圖做的,採取選擇選項的文本,並把它內跨距(與此數據替換select one),具有類名ui-btn-text

下面

是我試圖ahve所以沒有任何的運氣

function selectState(id,stateId){ 
var selectedState = $("#"+stateId+" option:selected").text(); 
$(id).closest("ui-btn-text").text(selectedState); 
} 

請建議我我如何能做到這一點的代碼..

回答

5

.closest()ref會進步了DOM,但不會趴下像.parents()不(順便說一句,你沒有添加.(點)爲類搜索,但這可能是一個錯字)

這裏是一個嘗試:

$(id).parent().find(".ui-btn-text").text(selectedState); 
+0

它不是爲我工作.. :( – Vivek

+0

見這個例子:jsfiddle.net/8HfTa/5(順便說一句,ipr101貼出相同的代碼...) - 也請注意我已經在創建jsfiddle的時候更正了我的代碼,因爲你的'ui-btn-text'低了2級,所以我不得不使用'find'而不是'children'(後者僅向下一級) – JMax

+0

@ JMax ...感謝你的投入..現在工作.. :) – Vivek

2

嘗試 -

function selectState(id, stateId) { 
    var selectedState = $("#" + stateId + " option:selected").val(); 
    $(id).parents('div').find(".ui-btn-text").text(selectedState); 
} 

這將 -

  1. 找到「選擇」元素
  2. 使用find父「DIV」來獲得包含在父DIV

演示了.ui-btn-text元素 - http://jsfiddle.net/H2pea/1

1

使用屬性像平變化不如果你使用jQuery,真的很不顯眼。這是更好的:

$('#ADDR_SHIP_STATE').change(function() { 
    $(this).prev().find('.ui-btn-text').text($(this).val()); 
});