我正在尝试使用选定的特定值设置一个选项(使用jQuery)。我有一个字符串:
var data = '<select><option value="1">A</option><option value="2">B</option><option value="3">C</option></select>';
现在我正在尝试找到值为2的选项标签,并将其设置为选中
$(data).find('option[value=2]').attr('selected','selected');
它不起作用:-( ...我也尝试过:
$(data).find('option').each(function(){
if($(this).val()==2){
$(this).attr('selected','selected');
}
});
哪个也不起作用...... 那里有谁可以提供帮助吗?
答案 0 :(得分:13)
您的代码运行正常,但当然您需要将其附加到DOM才能看到结果。在这里,我使用了appendTo()
[docs]方法。
示例: http://jsfiddle.net/cqhGH/
// --v---------------make sure the DOM is loaded
$(function() {
var data = '<select><option value="1">A</option><option value="2">B</option><option value="3">C</option></select>';
$(data).appendTo('body').find('option[value=2]').attr('selected','selected');
});
虽然更简单的方法是使用val()
[docs]方法。
示例: http://jsfiddle.net/cqhGH/1/
$(function() {
var data = '<select><option value="1">A</option><option value="2">B</option><option value="3">C</option></select>';
$(data).appendTo('body').val(2);
});
答案 1 :(得分:0)
@patrick dw 我想我必须更具体:-)我正在尝试构建一些新的表行并将它们附加到表中。该表看起来像:
<table id="my_id">
<tbody>
</tbody>
</table>
我要追加的表行有一个带有select标签的td。除了取决于值的“selected”属性外,每行中的select标签都是相同的。
var new_tr = new Array();
var some_values = new Array(3,7,15);
var data = '<select><option value="1">A</option>...<option value="26">Z</option></select>';
$.each(some_values, function(i,j){
$(data).find('option[value='+j+']').attr('selected','selected'); // this is the row wich does not work
new_tr.push('<tr><td>'+data+'</td></tr>');
});
$('#my_id > tbody').append(new_tr.join(''));
我猜数据需要是一个对象,而不是一个字符串......