将值从多个选择移动到另一个选择

时间:2012-06-07 13:07:07

标签: jquery select

我有2个多选 - 我可以将它移动到我在.select-cities中点击的选项到.chosen-cities,但是,它不起作用吗?任何想法为什么不呢?

//Move cities to div
$jq('.select-cities option').click(function () {
    return !$jq('.select-cities option:selected').remove().appendTo('.chosen-cities');
});

$jq('.chosen-cities option').click(function () {
    alert(this);
    $jq('.chosen-cities option:selected').remove().appendTo('.select-cities');
});

HTML:

<select class="select-cities" name="city" multiple="multiple">
                <option>Frederiksberg</option>
                <option>Vanløse</option>
                <option>Glostrup</option>
                <option>Brøndby</option>
                <option>Roskilde</option>
                <option>Køge</option>
                <option>Gentofte</option>
                <option>Hillerød</option>
                <option>Tårnby</option>
                <option>Vallensbæk</option>
            </select>

<select class="chosen-cities" name="chosen-cities-name" multiple="multiple">

            </select>

5 个答案:

答案 0 :(得分:4)

$('.select-cities').click(function () {
    $('.select-cities option:selected').appendTo('.chosen-cities');
});

$('.chosen-cities').click(function () {
    $('.chosen-cities option:selected').appendTo('.select-cities');
});

jsFiddler示例

答案 1 :(得分:1)

选择器选项不会触发点击事件

这是一个可能的解决方法 http://jsfiddle.net/nDvch/1/

答案 2 :(得分:0)

您可能需要使用jQuery live()函数来确保click事件适用于与选择器匹配的所有元素,即使这些元素发生更改:.live()

答案 3 :(得分:0)

首先,我不会使用$jq('.chosen-cities option').click而是使用$jq('.chosen-cities').change(function () {

对于您的实际问题:remove()还会删除所有事件侦听器。更好地使用detach

答案 4 :(得分:0)

您必须将click事件分配给“select”元素。不要“选择”。

请参阅此小提琴:http://jsfiddle.net/fBd5z/