5

最初に申し訳ありません...私は以前にこの質問を投稿しましたが、それを説明するのに悪い仕事をしました。hoverIntentを次のJavaScriptにプラグインするのに問題があります...以下のmouseenterおよびmouseleave関数を置き換えるために必要です。明確にするために、私はJavaScript構文があまり得意ではないので、助けを求めています。以下の2番目のコードスニペットは機能するはずですが、何も実行せず、InternetExplorerでは完全に機能していないようです。

if (jQuery.browser.msie === true) {
  jQuery('#top_mailing')
    .bind("mouseenter",function(){
      $("#top_mailing_hidden").stop().slideDown('slow');
    })
    .bind("mouseleave",function(){
      $("#top_mailing_hidden").stop().slideUp('slow');
    });
}

他のブラウザで以下を使用していますが、InternetExplorerでは機能しません。

$('#top_mailing').hoverIntent(
  function () {
    $("#top_mailing_hidden").stop().slideDown('slow');
  }, 
  function () {
    $("#top_mailing_hidden").stop().slideUp('slow');
  }
);
4

1 に答える 1

3

私は問題を見つけたと思います。

$('#top_mailing').hoverIntent(...2回電話しています。1回はhoverintent_r5.jsファイルの下部にあり、もう1回はcustom.jsファイルにあります。どうやらIEはそれが好きではありません。どちらか一方を取り除くと、問題ないはずです。

おそらく、すべてのコードを独自のjsファイルに保持する方がよいでしょう。そうでなければ、忘れがちです。

編集: stop()の問題を回避します。

私はアニメートするのが好きです:

$('#top_mailing').hoverIntent(
  function () {
    $("#top_mailing_hidden").stop().animate({height:150},'slow');
  }, 
  function () {
    $("#top_mailing_hidden").stop().animate({height:0},'slow');
  }
);

このように、あなたが立ち止まって方向を変える必要があるとき、それは常にどこに行くべきかを知っています。(上記の例では0と150です。)

これには、top_mailing_hiddenをclip:auto; overflow:hidden設定する必要があることに注意してください。

hoverIntentを使用しているので、stop()を呼び出す必要がない場合があります。これは、hoverIntentがこれらの意図しないマウスオーバーイベントを回避することを目的としているためです。

少しオフトピック:

実装に関して1つのことを覚えておいてください。これは記入するフォームであるため、ユーザーは入力を開始するときにマウスを邪魔にならないように移動する可能性があります(考えもしません)。これにより、フォームが消えます。

そのことを念頭に置いて、マウスアウトイベントの実行を再検討することをお勧めします。オプションの[キャンセル]または[閉じる]ボタンを使用して、ユーザーがフォームを送信したときにいつでもスライドして戻すことができます。

于 2010-02-11T14:34:11.663 に答える