1

html:

<div id="container">
    <select id="selector">
        <option value="">--</option>
        <option value="Service">Service</option>
        <option value="Sales">Sales</option>
        <option value="Marketing">Marketing</option>
        <option value="Finance">Finance</option>
        <option value="Engineering">Engineering</option>
        <option value="Management">Management</option>
    </select>
</div>
<input type="button" id="test" />

没有克隆()的脚本,可以正常工作:

$('#test').click(function(){
    $('#container').find('select').each(function() {
        var $elem = $(this);
        var value = $elem.val();
        alert(value);
    });
});

带有克隆()的脚本,不起作用:

$('#test').click(function(){
    $('#container').clone().attr('id', 'container2').find('select').each(function() {
        var $elem = $(this);
        var value = $elem.val();
        alert(value);
    });
});
4

1 回答 1

2

我不知道这是否是问题,但你应该注意,当你克隆一个<select>元素时,如果它被用户选择,它的选定项目将被忽略。要解决这个问题,您可以简单地将selectedDOM 属性应用于最初选择的任何选项。例如

$('#test').click(function(){

    var selectMenus = $('#container').find('select');

    $('#container').clone().attr('id', 'container2').find('select').each(function(i) {

        /* See this: */
        $('option', this)[selectMenus[i].selectedIndex].selected = true;

        var $elem = $(this);
        var value = $elem.val();
        alert(value);

    });

});

编辑:我不确定这是否是跨浏览器问题,但它肯定会影响 FF3.5。

于 2009-08-31T13:26:02.803 回答