如何设置为元素选择的属性并从休息中删除属性?

时间:2014-10-27 13:47:49

标签: javascript jquery html

我想要完成的事情是当用户选择该选项时,它应该将dom属性“selected”添加到该元素。并从其他列出的元素中删除“selected”属性。

<select id="tSelect" class="form-control input-sm">
    <option value="Inlook">Inlook</option>
    <option value="Metallium">Metallium</option>
    <option value="Ossmet">Ossmet</option>
</select>
$("#tSelect").change(function(){
    $("#tSelect option:selected").removeAttr('selected');
    var val = $(this).val();
    $('#tSelect option[value="' + val + '"]').attr("selected", "selected");
});

到目前为止,这是我的代码,但似乎没有用。

2 个答案:

答案 0 :(得分:0)

现在,当我知道你为什么需要这个时,这是可能的解决方案。请注意,需要具有x-selected自定义属性的恶作剧,因为您无法在不干扰实际选项选择的情况下设置/删除selected属性。因此,您可以设置虚拟属性,并在获得选择HTML时将其替换为真实。

&#13;
&#13;
$("#tSelect").change(function() {
    $(this.options).removeAttr('x-selected');
    $(this).find(':selected').attr('x-selected', 'selected');

    var outerHTML = this.outerHTML.replace(/x-selected/g, 'selected');
    alert(outerHTML);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="tSelect" class="form-control input-sm">
    <option value="Inlook">Inlook</option>
    <option value="Metallium">Metallium</option>
    <option value="Ossmet">Ossmet</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

<select id="tSelect" class="form-control input-sm">
<option value="0">Inlook</option>
<option value="1">Metallium</option>
<option value="2">Ossmet</option>
</select>

$("#tSelect").change(function(e) {
var val = $(this).val();
$(this.options).removeAttr('selected');
$('select>option:eq('+val+')').attr('selected', 'selected');
});

这是我现在制作和使用的剧本。

谢谢@dfsq,你的回答非常有用:)