我有一个下拉列表(yii框架),我想更改其选定的值。 这是下拉列表:
<?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());
它输出的值为'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 :(得分: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')