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

おそらく、jQuery live()関数を使用して、要素が変更された場合でも、セレクターに一致するすべての要素にクリックイベントが適用されるようにする必要があります。.live()

于 2012-06-07T13:10:58.843 に答える
0

まず、使用しません$jq('.chosen-cities option').click$jq('.chosen-cities').change(function () {

そしてあなたの実際の質問のために:remove()はすべてのイベントリスナーも削除します。デタッチを使用することをお勧めします

于 2012-06-07T13:11:58.210 に答える
0

クリックイベントを「select」要素に割り当てる必要があります。「オプション」ではありません。

このフィドルを参照してください:http://jsfiddle.net/fBd5z/

于 2012-06-07T13:14:21.023 に答える