使用jQuery将属性添加到选项

时间:2015-02-04 15:02:41

标签: jquery

我有一个onclick事件:

<button class="editbutton" onClick='edit(this, "<?php echo $this->result[$i]["ctype"]; ?>", "<?php echo htmlentities($this->result[$i]["name"], ENT_QUOTES); ?>", "<?php echo $quality; ?>", "<?php echo $this->result_cameras[$i]["camera_hash"]; ?>", "<?php echo $status; ?>",...)'></button>

我将这些传递给jquery并构建一个表单(在模态对话框中):

var edit = function(t, ctype, name, quality, hash, status, ...)
 {

    var $formDiv = jQuery("#editform");
    $formDiv.empty();

    var $editForm = jQuery("<form id='EditForm' method='post'></form>");
....//more code on building form
    var $selectStatus = jQuery("<select id='Status' name='camera_status'></select>");

    var enabledHtml = "<option value='ENABLED'>ON</option>";
    var disabledHtml = "<option value='DISABLED'>OFF</option>";

    var $statusEnabled = jQuery(enabledHtml);
    var $statusDisabled = jQuery(disabledHtml);

    // create opt group
    var $optgroup = jQuery("<optgroup label='Info'>");
    if(info.length > 0){   
        for (i=0; i<info.length; i++) {
            var $op = jQuery("<option value='" + info[i].info_hash + "'>" + info[i].info_name + "</option>");
            $optgroup.append($op);
        }
    }else{
        var op = "<option value='none' disabled>None</option>";
        $optgroup.append(op);
    }

info的位置:

var info = [{"info_name":"test","info_hash":"3029688965"},{"info_name":"gggg","info_hash":"175360653"},...]

这很有效。我的问题是选择并进行默认选择。我传入变量status来帮助解决这个问题。它的值为0(关闭),1(打开)或者在optgroup下面的字符串名称。

因此,此代码适用于开/关属性:

if (status == 1) {
    $statusEnabled.prop("selected", "selected");
}
else if (status == 0){
    $statusDisabled.prop("selected", "selected");
}
else {

    console.log(status);
}

$selectStatus.append($statusEnabled, $statusDisabled, $optgroup);

在else块中,console.log显示正确的值。我想我只是想知道如何在这种情况下指定一个“选定的”值?

1 个答案:

答案 0 :(得分:0)

您应该浏览<option>个标签,如果其中一个与名称匹配,请指定selected属性:

if (status == 1) {
    $statusEnabled.prop("selected", "selected");
}
else if (status == 0){
    $statusDisabled.prop("selected", "selected");
}
else {
    $selectStatus.each(function() {
        if($(this).html() == status)
            $(this).prop("selected", true);
    });
}

修改

您可以在创建选项时设置所选属性:

for (i=0; i<info.length; i++) {
    var $op = jQuery("<option value='" + info[i].info_hash + "'>" + info[i].info_name + "</option>");
    if(info[i].info_name == status)
        $op.prop("selected", true);
    $optgroup.append($op);
}