2017-10-20 3 views
0

Firefox、Chrome、Edge、IEで正常に機能するSafari(およびiosデバイス)で何か問題が発生しています。Ajaxコールバックでレンダリングされた要素のクリックハンドラが起動しない - Safariでのみ

私のページには、サーバーに入力を戻し、サーバーがこの要素を作成した後にdomに要素を追加する入力フィールドがあります(検索結果のサーバー側のレンダリングを伴う複雑なコンボボックスと考える)。誰もがこれらのリンクの多くは、ページに存在する方法を知っていないので、ページに追加されます

このDOM要素はこの1つ

<a href="" class="stampOption">Search result 1</a> 

などのクリック可能なリンクが含まれている、私はこのような文書にAAのクリックハンドラを登録します:これは私がこれまでにテストしたすべてのブラウザで罰金ですが、漢を

$(文書).on( "touchstartタップをクリックし、" 関数(EVT){

if ($(evt.target).hasClass("stampOption")) { 

       some code...  
}); 

クリックdlerはSafariで呼び出されることはありません。

$(document).on("click touchstart tap", ".stampOption", function(evt) { 

私はそうのような(ものSafari/iOSの問題を持っているように見える)委任イベントのようないくつかの選択肢を試してみました。そして私はカーソルを適用しました:ポインタのCSSトリックだけでなく、ここで提案されているonclick = ""トリックです。

また、他のクリックイベントハンドラがバブリングなどを防止していないことを確認しました。

他のアイデアは何ですか?

+0

hrefを '#'にしてリンクのデフォルト動作を妨げようとしています - サファリはhrefなしのリンクに問題があると思います – Pete

+0

+ Pete unfortunaly、助けてください。 hrefがナビゲートされておらず、クリックハンドラがまったく呼び出されていません。ちょうど前のように。 –

答えて

0

Nevermind。問題は、Safari上で常にNullだったrelatedTargetを使用した同じページのぼかしハンドラでした。したがって、if()文がSafariで正しい結論に至ったことはありませんでしたが、他のブラウザではうまくいきました。 いくつかのハンドラがSafariでクリックイベントを処理したとします。ブラウザの非互換性に対する典型的な例...

関連する問題