jquery / javascript:return和if sentence

时间:2015-02-10 19:28:38

标签: javascript jquery

我的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之后不是一个选项(不幸的是)

3 个答案:

答案 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对象,然后按原样返回元素。