请帮助我这样做,以便在我的手机中使用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
选择的选项答案 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移动附件都已设置/制作),这恰好会给你结果(下面)
小提琴:http://jsfiddle.net/5ksG8/
这在尝试构建<select>
列表时显然没有帮助,因此我们需要将上面的代码段附加到:
$("#opsContactId").selectmenu('refresh', true );
在片段运行后,它会“重新加载”整个列表,最后为您提供(以下)
小提琴: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>');