我正在使用Jquery Datatables进行内联编辑。我有一个硬编码的下拉列表,它动态地为每一行创建。
<select class="form-control edit-mode" id="Status">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
所以要获取我使用的当前所选项目的值
var tr = $(this).parents('tr:first');
var status = tr.find('#Status').val();
我想要设置的值是在它旁边的标签中。所以我得到了它的价值:
var stat = tr.find('#lbl_Status').html();
那么如何将下拉列表的选定值设置为stat变量?
我已经尝试使用我在Stackoverflow上找到的其他解决方案,但它们无法工作,因为我似乎无法获得整个元素或其他东西。由于.length不在status元素上。而且我不能使用普通的document.getElementById方法,因为它可以是具有相同ID的多个选择列表。
F.ex使用此解决方案:
$(document).on("click", ".edit-action", function (e) {
var tr = $(this).parents('tr:first');
var stat = tr.find('#lbl_Status').html();
var status = tr.find('#Status');
for (var i = 0; i < status.options.length; i++) {
if (status.options[i].text === stat) {
status.selectedIndex = i;
break;
}
}
});
我得到:未捕获的TypeError:无法读取未定义的属性'length'
答案 0 :(得分:1)
status是jquery对象,使用:
status.find('option').length;
或转换为javascript对象并使用:
status[0].options.length
<强> Demo 强>
答案 1 :(得分:0)
我通过使用这一行而不是整个for循环来解决这个问题。
status.find("option:contains("+ stat +")").attr('selected', true);
感谢您指出它是一个Jquery对象,它让我得到答案:)