3

我有 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>
4

5 回答 5

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

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

jsFiddler示例

于 2012-06-07T13:13:08.170 回答
1

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

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

于 2012-06-07T13:11:09.303 回答
0

您必须将点击事件分配给“选择”元素。不是“选项”。

看到这个小提琴:http: //jsfiddle.net/fBd5z/

于 2012-06-07T13:14:21.023 回答
0

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

于 2012-06-07T13:10:58.843 回答
0

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

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

于 2012-06-07T13:11:58.210 回答