我有一张桌子,每行都有一个复选框和下拉菜单。
这是一行
<tr>
<td><input id="checked1" type="checkbox" class="cd" value="1"></td>
<td><b>select</b></td>
<td>
<select name="questionType" id="questionType" class="qType QSelect">
<option value="">--Select--</option>
<option value="1">text</option>
<option value="2">rate</option>
<option value="3">etc</option>
<option class="show-checkboxes" value="4">option</option>
</select>
</td>
<td><input type="hidden" id="optionInputa1"></td>
</tr>
我想将下拉列表设置为使用jquery选择显示text
。
这是我试过的两种方式
//$("#checked1").closest("input:select").val('text');
$('#checked1').parent().sibling().sibling().children().closest("input:select").val('text');
但没有效果。
谁能告诉我这里有什么问题?
您可以看到fiddle
答案 0 :(得分:1)
你正在做的事情是超级复杂和脆弱的!
closest
仅向上遍历,并且该选择器永远不会与select
匹配,因为select
不是input
。
此外,您必须根据,呃,值设置select
的值,而不是显示文字。
最后,你的小提琴不起作用,因为没有桌子而且<tr>
永远不会进入DOM。
你想在行中找到相同的select
,所以就这样做:
$('#checked1').closest('tr').find('select').val('1');
更新了小提琴:http://jsfiddle.net/E3q5x/3/
答案 1 :(得分:1)
试试这个:
编辑:根据关于聊天的讨论,在页面加载时选择下拉值,并且值等于复选框值。因此更新了jQuery和JSfiddle链接。
$(document).ready(function(){
$('input[type=checkbox]').each(function(){
$(this).closest('tr').find('select').val( $(this).val());
});
});
以下是JSFiddle
答案 2 :(得分:1)
如果您希望在checkbox checked
上完成此操作,可以试试这个..
$("#checked1").click(function () {
$("#checked1:checked").parents('tr').find('select').val('1');
});
<强> Fiddle
强>