2012-04-11 31 views
2

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

jleryの代わりに.liveの代わりに、プラグインまたはこれを修正する回避策がありますか?

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

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

-Jake

EDIT:

は、すべてのすべては、私が2つの複数選択ボックス内のデータを持っているものを持っているということです目指してマイもう1つは空白です。データを含む選択ボックス内のオプションをダブルクリックすると、空の選択項目に複製されます。追加されたオプションをダブルクリックすると、完全に削除されます。 (このコードが動作している、それがないだけでイベントハンドラです)

HTMLは、これらの線に沿って何かを探します:あなたはjQueryの1.7バージョンを使用しているので、

<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> 
+2

'.live'は1.7以降推奨されていません。代替案を試しましたか? (私はそうではないと思います。最初に文書を見てください)。 –

+0

あなたはHTMLを投稿できますか? –

+0

[この投稿を見る] [1]それはあなたの探している答えかもしれないように見える [1]:http://stackoverflow.com/questions/3840149/jquery-live-event-for- added-dom-elements – mcgrailm

答えて

3

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

問題を参照してくださいIEでこのテストアプリを試してみてください。http://jsfiddle.net/jfriend00/JGrbh/

パー、あなたが実際に何をしようとしてのあなたのより多くの要求の開示、あなたが代わりに.on()のダイナミックなフォームを使用して、このhttp://jsfiddle.net/jfriend00/Ry9Ns/ようにそれを修正することができます非推奨の.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(); 
})​ 
+0

ちょうど私の運...あなたはこれの回避策を知っているだろうか? – JakeJ

+0

あなたのHTMLがどのようなものか、本当に検出しようとしているのかどうかはわかりませんが、おそらくselectオブジェクトで 'change'イベントを使いたいと思っています。 – jfriend00

+0

私はいくつかのHTMLと私が何をしようとしているのを投稿します。ちょっと待ってください – JakeJ

-1

jQuery.onを試してみてください。

それとも

があればIEはそれに敏感であるいくつかのマークアップの問題。 Div ID命名規則では一般的に起こります。

+0

質問に答えません。 .on()に切り替えることは価値あるコメントですが、質問に対する答えではありません。 – jfriend00

+0

その理由は、div markupの問題を追加したために、jqueryがほとんど失敗するということです。 –

+0

IDのアルファニューマティック名の代わりに数字を使用したので、これを経験しました。たぶんこれは非常に小さなものですが、最も重要です。 –

0

は私が自分自身にIEがオプションタグのクリックハンドラをサポートしていませんのでjfriend00

によって提供される情報をオフに基づいて、この問題の回避策を発見した、ここで私がやっていることです:

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

    //Do Stuff 
}); 

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

-Jake

関連する問題