我的jquery / javascript问题: 我需要返回html选择输入的代码,但我还需要动态设置所选选项。
function(data){
return '<select class="form-control"'+
'<option value="1"'+ if(data === 1){selected}+'>Name 1</option>'+
'<option value="2"'+ if(data === 2){selected}+'>Name 2</option>'+
'<option value="3">Name 3</option>'+
'</select>';
}
注意:使用$(selector).val(data);提交html之后不是一个选项(不幸的是)
答案 0 :(得分:5)
你不能把一个if放在一个刺痛中,但是你可以使用一个三元运算符。
function(data){
return '<select class="form-control"'+
'<option value="1"'+(data === 1 ? ' selected' : '')+'>Name 1</option>'+
'<option value="2"'+(data === 2 ? ' selected' : '')+'>Name 2</option>'+
'<option value="3">Name 3</option>'+
'</select>';
}
答案 1 :(得分:2)
if
语句不会计算为值。你不能用这种方式将它们嵌入到表达式中。
您的选择是使用三元运算符,或者在多个语句中构建字符串。
function(data){
var str = '<select class="form-control"'+
'<option value="1"';
if(data === 1){str += "selected"}
str += '>Name 1</option>'+
'<option value="2"';
if(data === 2){str += "selected"}
str += '>Name 2</option>'+
'<option value="3">Name 3</option>'+
'</select>';
return str;
}
答案 2 :(得分:1)
你可以用更简洁的方式用jQuery做到这一点:
function(data){
return $('<select class="form-control"'+
'<option value="1">Name 1</option>'+
'<option value="2">Name 2</option>'+
'<option value="3">Name 3</option>'+
'</select>').val(data);
}
编辑:经过进一步测试后,我发现将jquery对象转换为html不会保留所选属性。或者,函数可以返回jquery对象,然后按原样返回元素。