JQuery将选择框值设置为选中

时间:2014-01-15 10:20:22

标签: javascript jquery

请帮助我这样做,以便在我的手机中使用jquery mobile

var obj = jQuery.parseJSON(finalresult);
 //alert(obj);
var dept = '2';
$(document).ready(function () {
    //$("#opsContactId").empty();
    $.each(obj, function (k, v) {
        var $opt = $("<option/>");
        $opt.attr("value", k);
        //alert(k);
        //alert(v);
        //var value1=v;
        if (k == dept) {
            //$opt.attr("selected","selected");
            //alert("in if");
            $("#opsContactId").val(k);
            //document.getElementById("opsContactId").value=k;
            // $('#opsContactId').selectmenu('refresh', true);  
        }
        $opt.text(v);
        $opt.appendTo($("#opsContactId"));
    });
});

无法设置dafault

选择的选项

3 个答案:

答案 0 :(得分:2)

正如其他人所述,jQuery的.prop()将是最合适的答案,因为jQuery Docs提到了自己:

  

.prop()方法应该用于设置已禁用和已检查而不是.attr()方法。.val()方法应该用于获取和设置值。”

为了进一步展示你的例子,jQuery允许方法'chaining'在方法完成后返回jQuery对象,因此你可以在它之后直接添加

<select id="opsContactId">   
</select>

<script>
$(document).ready(function() {
    var tmp = [ 1, 2, 3, 4, 5 ], 
        dept = 2;

    $.each( tmp, function( k, v ) {
        $("<option/>").attr("value", k)
                      .text( "Value - " + v)
                      .appendTo( $("#opsContactId") )
                      .prop( 'selected', ( k == dept ? 'selected' : '' ));        
    });
});
</script>

小提琴http://jsfiddle.net/twdgC/


后来我忘了你提到你问题的jQuery移动方面,这会稍微改变问题的动态。上面的代码片段页面加载后运行(因此,所有jQuery移动附件都已设置/制作),这恰好会给你结果(下面

Empty Select Option

小提琴http://jsfiddle.net/5ksG8/

这在尝试构建<select>列表时显然没有帮助,因此我们需要将上面的代码段附加到:

$("#opsContactId").selectmenu('refresh', true );

片段运行后,它会“重新加载”整个列表,最后为您提供(以下

After query

小提琴http://jsfiddle.net/YxVg6/

你在原始代码片段中执行此操作,问题是 - 你在循环中执行它(它被注释掉了!)。

答案 1 :(得分:0)

jsBin demo

如果您有匹配项,则需要添加所选属性。但是我不知道你的物体是怎么样的......

var obj  = {"1":"one","2":"two","3":"three","4":"four"}; // let's say that's how it looks
var dept = '2';

$(function () {

  var $sel = $("#opsContactId"); 
  $.each(obj, function (k, v) {
    var $opt = $("<option/>", {value:k, text:v}).appendTo( $sel );
    if (k == dept) $opt.prop({selected:true}); 
  });

});

答案 2 :(得分:0)

这样的事情会不会更容易吗?

这样的事情会不会更容易吗?

var selected = "selected";   // work this out
var text = "Option Text"; // work this out
var value = "Option Value"; // work this out
$("#opsContactId").append('<option value="' + value + '" '+ selected + '>' + text + '</option>');