3

これを行うと、

location.hash = "test"

URL が更新され、その ID を持つ要素にページが表示されます。

ページがその要素にホーミングするのを止める方法はありますか?

4

2 に答える 2

3

解決

この動作を防ぐことはできませんが、ターゲットを一時的に非表示にすることでだますことができます。そのように(jQueryとは関係ありません):

// obtain "target" DOM (not jQuery) element and do this:
var original_id = target.id; // save original ID
target.id = null; // set target's ID
location.hash = 'test'; // issue location.hash change
target.id = original_id; // set ID to original value

一般化されたソリューション

またはより一般的な例:

// make target_hash set to a hash you want to not lead you to page section and:
var element = document.getElementById(target_hash); // find element by ID
var original_id = element.id; // save original ID
location.hash = target_hash; // previously defined by you (eg. 'test')
element.id = original_id; // reset ID

デモ/証明

ライブの例は、jQuery を介してアタッチされたイベント ハンドラーで次のようになります (デモはこちら: http://jsfiddle.net/DaZfH/ )。

some_link.on('click', function(event){
    event.preventDefault();
    var target = document.getElementById('target');
    var original_id = target.id;
    target.id = null; // unset ID
    location.hash = 'target';
    target.id = original_id;
});

免責事項

しかし、実際には他の人も正しいです。ドキュメント内の正しい場所に移動することは正しい動作です。私が述べたようなことをしているなら、あなたの解決策はかなりハキーであり、それを行うためのより良い方法が間違いなくあります.

于 2012-11-11T05:17:22.657 に答える