2012-08-11 91 views
0

我有一個下拉列表(yii框架),我想更改其選定的值。 這是下拉列表:用jquery更改下拉列表的選定值

<?php 
       $t = is_null($dataProvider[$key]['room']) ? 'NA' : $dataProvider[$key]['room']; 

       echo 'Room Number : ' . CHtml::dropDownList(Rooms::model(), 'roomID', CHtml::listData(Rooms::model()->findAll(array(
            'condition' => 'status = :status or roomID = :roomID', 
            'params' => array(
             ':status' => 'ready', 
             ':roomID' => $dataProvider[$key]['room'] 
            ) 
           )), 'roomID', 'roomID'), array('id' => 'room', 'class' => 'ui-widget-content', 'empty' => 'NA', 
       'options' => array($t => array('selected' => true)))) 
       ; 
       ?> 

現在這個下拉列表是父母的孩子,我想克隆這樣我就可以再次使用它,所以我用這個克隆它:

var test =$("#users-contain").children(':last').clone(true,true); 
     test.children("#room option[value='3']").attr('selected', 'selected'); 
     test.children('table').children('tbody').children('tr').empty(); 
     var inner = test.clone(true,true); 

我將使用var inner來更改元素中的一些內容並將其克隆到頁面上。 現在,這裏是我的問題,我的新克隆這是VAR測試,我想改變的下拉列表中的選擇的價值,但它並沒有在所有的工作,我想這:

test.children("#room option[value='3']").attr('selected', 'selected'); 

和這樣的:

test.children('#room').val(3); 

沒有什麼工作,我也試過,我不記得其他的事情,但是我要指出,使用最後一個,當我與調試它:

console.log(test.children("#room").val()); 

它OUTP值爲'3',這是正確的,但是當我在頁面上顯示它時,舊下拉列表中的選定值不會改變。 這是結果:

<select id="room" class="ui-widget-content" name=""> 
<option value="">NA</option> 
<option value="1">1</option> 
<option value="2" selected="selected">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
</select> 

在此先感謝您。

回答

0

test.children("#room option[value='3']").attr('selected', 'selected')有基本的想法,但children得到子元素只有和過濾它們。所以它會得到#room,但它不會得到option元素,因爲<option>test的孫子女。相反,使用find,它搜索所有後代元素。這裏的代碼:
test.find("#room option[value='3']").attr('selected', 'selected')

+0

謝謝你,它的工作=) – user1438230 2012-08-11 12:21:59

相關問題