jQuery选择选项不适用于尚未添加到DOM的

时间:2015-06-17 19:15:25

标签: javascript jquery html

我试图在尚未添加到DOM的select元素中选择一个特定选项,但它似乎不起作用。我试图做的不可能吗?

我想点击"添加选择"按钮,并使用" 0"查看添加到DOM的新选择元素。选择了选项。

这是

JsFiddle

HTML

<div id="container">
    <select class="mySelect">
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2" selected>2</option>
    </select>
</div>

<button id="addSelect">Add Select</button>

JS

$(document).ready(function() {
    var $template = $('.mySelect').first().clone(),
        $container = $('#container');

    $template.find('option').each(function(i, option) {
       $(option).prop('selected', false); 
    });

    $('#addSelect').click(function(e) {
        e.preventDefault();
        $container.append($template.clone());
    });
});

正如你可以在小提琴中看到的那样,新的选择被添加,但它有&#34; 2&#34;选择了选项。

我也尝试使用$template.val('0')重置选择,但这也不起作用。选择仍然出现在&#34; 2&#34;选择了选项。

3 个答案:

答案 0 :(得分:4)

删除属性selected,因为在无DOM元素上设置属性不设置其属性,元素未链接到DOM:

$template.find(':selected').removeAttr('selected');

-DEMO-

答案 1 :(得分:0)

 $('#addSelect').click(function(e) {
        e.preventDefault();
        var $a = $template.clone();
        $a.find('option').prop('selected',false)
        $container.append($a);
    });

更新了fiddle

答案 2 :(得分:0)

$template.find('option:selected').removeAttr('selected');

http://jsfiddle.net/Lm7d714q/8/