IEのいくつかのコードでpreventDefault()が機能しない

私はいくつかのJSを持っているので、次のコードがページを再読み込みしないようにする必要があります(私はAJAXを使ってその一部をリフレッシュします)が、IEでは常にページをリロードしています。他のブラウザはすべて正常です。

JSは、別のスレッドで提供しています -

$('#attachment-body').delegate("a", "click", function(e){
    e.preventDefault();
});

ページをまだリロードしているリンク(#attachment-body コンテナ内にある) -

<div id="image-navigation">
    <div id="nav-previous" class="nav-previous attachment-nav-previous float-left">
        
« Previous Image

</div> <div id="nav-next" class="nav-next attachment-nav-next float-right">
Next Image »

</div> </div>

それがレンダリングされると、これは上記で生成されたコードのブロックです -

<div id="image-navigation">
    <div id="nav-previous" class="nav-previous attachment-nav-previous float-left">
        
« Previous Image

</div> <div id="nav-next" class="nav-next attachment-nav-next float-right">
Next Image »

</div> </div>

preventDefault() works in IE as I use it in other areas of the site, so I can only think that something in my code is not right.

ありがとう。

0
IEは $( '#attachment-body')を認識していません。デリゲート... 他のすべてのブラウザと同じです。ありがとう。
追加された 著者 David Gard,
拘束力があるといいですが、私が使っているように、$( '#post-related-image-thumbs a')を使うことはできません。(function(e){e.preventDefault();}); これは、ギャラリーのメイン画像のサムネイルでうまくいきます。 IEの他の場所でも動作するので、 delegate()ではありません。コードにalert( 'Test'); を追加すると、それをピックアップしてアラートボックスを表示していませんが、何らかの形でメインイメージをクリックしていることに気付いています正しく動作しますが、次の/前のリンクは単純にページをリロードします。 IEに、JSが使われていることを正確に追跡する方法はありますか?
追加された 著者 David Gard,
delegate()の代わりにlive()を試したことがありますか、アンカータグを動的に生成していないのであればプレーンクリック()してみましたか?
追加された 著者 Jerry,
IEには、onClick属性が別々のバインディングを持つことはできません。 onClickに return false; を追加してみてください。私はonClickをまったく使用しないことをお勧めしますが、他の場所にバインドすることをお勧めします。
追加された 著者 Jerry,

1 答え

私は今これを解決したと思う...

私のギャラリーの次/前のリンクがクリックされると、 preventDefault() agianstを実行したdivを最初にクリアしたJS関数( onClick()を使用) 。それの代わりに、私はそれを隠し、それは今働く。

私はエキスパートではありませんが、IEテストのように、 .delegate().live()click()それはインラインで指定された関数を起動します(つまり、#attachment-body はチェックしていた時点で存在しませんでした)、他のブラウザとは逆です。

0
追加された
Jerryに感謝しますが、残念ながら私はJS関数(IDと両親を中心としたPHP)によってページロード時に集められたデータを渡していますが、私のコードを大きく変更することなく情報を動的に取得する方法はわかりません。 1つは将来のためだと思います。
追加された 著者 David Gard,
delegate、live()およびclick()は、jQueryのもので、addEventListenerなどを使用してブラウザのイベントにわずかに異なる方法でフックします。あなたがうまく働いてうれしい。また、アクションを割り当てるためにonClickを使用しないようにすることもできます。これは、コンテンツ/ロジックのより良い分離、コードの読み易さ、および複数のアクションをクリックイベントに割り当てる機能を意味します。
追加された 著者 Jerry,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript