2

私は自分のサイトでjQuery1.7.1を使用しており.live()、将来追加される要素で呼び出す必要のあるいくつかのイベントに関数を使用しています。何らかの理由で機能していません(エラー、アラート、何も表示されません)。少し読んだことがありますが、機能しないと言う人もいれば、正常に機能すると言う人もいますが、回避策や修正など、最近のことは何も見ていません。IE9(およびおそらく他のIE)ではなく、他のブラウザーでも正常に動作します。

私が使用できるjQueryの.liveに代わるもの、プラグイン、またはこれを修正するいくつかの回避策はありますか?

私の現在のコードは次のとおりです。

$('select[name="CourseLevelSelector"] option').live('dblclick', function () {
    //Do Stuff
});

-ジェイク

編集:

私の全体的な目的は、2つの複数の選択ボックスを用意することです。1つはデータがあり、もう1つは空白です。データが入っている選択ボックスのオプションをダブルクリックすると、空の選択に複製されます。次に、追加されたオプションをダブルクリックすると、完全に削除されます。(このコードは機能していますが、機能していないのはイベントハンドラーだけです)

HTMLは次のように見えます。

<select name="CourseLevelSelector" multiple="multiple">
    <option value="1">First</option>
    <option value="2">Second</option>
    <option value="3">Third</option>
</select>
<select name="CourseLevelIDs" multiple="multiple">

</select>
4

3 に答える 3

3

IE では、option要素はクリック イベントを取得せず、select要素のみを取得します。イベントを select オブジェクトにバインドする必要があります。

問題を確認するには、IE でこのテスト アプリを試してください: http://jsfiddle.net/jfriend00/JGrbh/

Per、あなたが実際にやろうとしていることのより多くの開示を要求するには、このhttp://jsfiddle.net/jfriend00/Ry9Ns/.on()の代わりに deprecatedの動的形式を使用して修正できます.live()

$("#container").on('dblclick', 'select[name="CourseLevelSelector"]', function(e) {
    var ids = $('select[name="CourseLevelIDs"]');
    $(this).find(":selected").each(function() {
        // make sure selected item is not already in the other list
        if (!ids.find('[value="' + this.value + '"]').length) {
            $(this).clone().appendTo(ids);
        }
    });

})


$("#container").on('dblclick', 'select[name="CourseLevelIDs"]', function(e) {
    $(this).find(":selected").remove();
})​
于 2012-04-11T16:36:03.003 に答える
0

jfriend00 から提供された情報に基づいて、この問題の回避策を見つけました。

IE はオプション タグのクリック ハンドラをサポートしていないため、次のようにしました。

$('select[name="CourseLevelSelector"]').live('dblclick', function () {
    var doubleClickedOption = $(this).find(':selected');

    //Do Stuff
});

選択ボックス自体のダブルクリックを処理し、選択された項目をコード内で使用するための jquery オブジェクトとして取得します。

-ジェイク

于 2012-04-11T17:00:52.743 に答える
-1

jQuery.on1.7 バージョンの jQuery を使用しているので試してみてください。

または

IEがそれに敏感なマークアップの問題がある場合。通常、Div ID の命名規則で発生します。

于 2012-04-11T16:28:23.293 に答える