1

JQuery toggle() を介して "display: none" で非表示になっている入力テキスト フィールドと、その下にアンカー タグが配置されているページがあります。アンカー タグを URL に入力するか、アンカー タグを参照するリンクをクリックして使用すると、通常、次のようにアンカーがある場所のすぐ上に移動することを期待します。

期待どおりに動作 http://i.snag.gy/1UavI.jpg

ただし、IE8 で表示すると、次のようになります。

期待どおりに動作しない http://i.snag.gy/dbyty.jpg

私が欲しいのは、そこにある非表示の入力フィールドと、正しいアンカー動作の両方です。

コードから非表示の入力を削除すると、スペーシングが修正されました。これにより、IE は非表示の入力によって使用されるスペースを考慮して、画面上のどこにアンカーをスクロールするかを考慮していると思います。

これは、jsfiddle で問題を再現しようとする最善の試みでしたが、残念ながら成功しませんでした。エラーが発生している実際のソース コードを投稿することはできませんが、できる限りの追加情報を提供しようとします。

http://jsfiddle.net/Xynev/4/

4

2 に答える 2

2

どのバージョンの IE でもアンカーを動作させるのに問題はありませんでした。しかし、あなたが実際に求めているものを反映していないため、Fiddle にあるコードと混同されました。

問題の明確で簡潔な説明がなければ、質問に答えることは困難です。私はあなたが伝えることができたものから答えを構築しましたが.

Aタグをクリックしたときにテキストフィールドを切り替えたい場合。次の jQuery を使用できます。

$('#testhide').click(function() {
   $('#hide').toggle();
});

testhide は A タグ ID になります。そう:

 <a id="testhide" href="#anchor-here">click here</a>

hide は、入力が含まれる div の名前です (好きな名前を付けることができます)。そう:

<div id="hide" style="height:90px">
    <input id="hidden" type="text"/>
</div>

それが役立つことを願っています。

編集されたフィドルへのリンクは次のとおりです。

http://jsfiddle.net/Xynev/8/

于 2012-08-16T07:39:48.570 に答える
0

昨日、自分の問題が何であるかを理解しました。

IE8 では、window.location.hash を使用して画面上の特定の領域に移動する場合、すべての JQuery .hide() または .toggle() 呼び出しが行われた後に必ず実行する必要があります。何が起きていたかというと、最初にアンカー タグに移動していて、次に hide() が発生しました。非表示にすることで、ページのスペースの量が減り、ページ全体が引き上げられます。

window.location.hash の前にページを非表示にするだけで、問題が解決しました。ただし、この間隔の問題が Firefox または Chrome で発生しなかった理由はよくわかりません。

于 2012-08-17T17:39:11.627 に答える