0

古いコード

「#search」divの上に移動すると問題が発生し、本来のようにスライドします。問題は、スライドすると検索入力フィールドが表示され、マウスがその入力フィールドを超えると実行が開始されることですマウスアウト機能、空の機能でマウスオーバー#search入力を与えることでこれを止めましたが、マウスが入力と「#search」ダイブを離れると、アニメーションバック機能が実行されません。

これが私のスクリプトです

$("#search").mouseover(function(){
    $(this).animate({"left": "0px"}, 500);
});
$("#search").mouseout(function(){
    if($("#search input").mouseover()){
        return false
        }
    else {
    $(this).animate({"left": "-282px"}, 500);
    }
});

私は何を間違っていますか?または、誰かが解決策を持っていますか?私はjQueryを初めて使用するので、学習を始めたばかりです:)そして、過去2日間Googleとドキュメントを検索しました。おそらく私だけが盲目なので、あなたの助けが必要です:

編集: 新しいコード & JS フィドル

検索バーを別の方法で行う必要があるため、代わりにステートメントをクリックする必要があるため、コードを再度作成しました。ここでJSfiddleを見てください

http://jsfiddle.net/D7s45/2/

それが私が作りたかったjQueryです:)

4

2 に答える 2

0
var t, isout=true;
$("#search").children("form").children().mouseover(function () {
    clearTimeout(t); isout = false;
});

$("#search").children("form").children().mouseout(function () {
    isout = true;
    tout = setTimeout(function () { $("#search").animate({ "left": "-282px" }, 500); }, 100);

});

$("#search").mouseover(function () {
    if (isout) $(this).animate({ "left": "0px" }, 500);
    clearTimeout(t); isout = false;
});

$("#search").mouseout(function () {
    isout = true; tout = setTimeout(function () { $("#search").animate({ "left": "-282px" }, 500); }, 100);
});
于 2011-12-12T13:42:34.457 に答える
0

入力をホバリングするときに伝播を停止してみてください。

$("#search input").hover(function(e) {
  e.stopPropagation();
}, function(e) {
  e.stopPropagation();
});

#search div の通常のコードは正常に機能するはずです。

于 2011-12-13T08:41:20.870 に答える