2017-01-03 5 views
5

状況によってはonHashChangeイベントリスナーを使用し、手動でhref="#hash"のリンクをクリックしているWebアプリケーションで作業しています。 しかし、jQueryの$('a[href=#"hash"]').trigger('click')または$('a[href=#"hash"]').click()のアドレスバーのハッシュを使用して同じリンクをクリックすると、変更されません。リンクをクリックしても位置のハッシュは変更されません

私が間違っていることはありますか?または私はこの目的のために別の方法を使用しますか?

HTML

<a href="#hash">Do Something</a> 

JS

// Not working 
$('a[href="#hash"]').click(); 

// Not working 
$('a[href="#hash"]').trigger('click'); 
+0

あなたはフィドルを使ってこれを実証できますか? – Anubhav

+0

クリックハンドラで 'preventDefault()'を実行しますか? – AndFisher

+1

愚かな質問。リンクをクリックする理由プログラムですべてを扱うのはなぜですか? – allnodcoms

答えて

1

あなたが書いたことは本当です(jQueryソースコードをデバッグするのに十分です):トリガークリックイベントはアンカーでは機能しません。あなたはDOM要素を取得してからクリックを発射することができますしようとしているものを達成するために

$('a[href="#hash"]').get(0).click() 

これはのみ動作します。

2

jqueryで使用される)click方法はel.click(function..el.on('click', function...

を使用して、あなたが登録 clickイベントをトリガ0

あなたが新しいMouseEventを作成し、関連する要素に直接派遣することができます。

e = document.createEvent('MouseEvents'); 
e.initEvent("click", true, true); 
$('a[href="#hash"]')[0].dispatchEvent(e) 

上記のコードは、クロム、FirefoxとIE

それとものclickイベントを使用して動作します要素(jqueryのclick関数は使用しませんが、ブラウザのclick関数は使用しません):

$('a[href="#hash"]')[0].click() 

セキュリティ上の理由により、このコードはいくつかのブラウザでは動作しない可能性があることに注意してください。

+0

jQueryの独自のトリガーはこれをクリックしていませんか? –

+0

詳細情報を入力して回答を更新しました – Dekel

+0

申し訳ありませんが、わかりません。実際の(url)hrefを持つリンクをクリックすると、場所は与えられたhrefに変更されます。しかし、それはハッシュのみのhrefでは動作しません。何故ですか?クリックのための新しいイベントを作成することを提案していますが、なぜクリックが同じことをしていないのかを知りたいのですが! –

4

ここで、新しい男は自分自身のアズを作っていません。私はちょうど私が私のサイトで使用しているこのコードの何かがあなたを助けるかもしれないと思った。それはちょっとあなたが描いているものに似ているようです。

$(document).ready(function(){ 
    $('a[href^="#"]').on('click',function (e) { 
    e.preventDefault(); 

    var target = this.hash; 
    var $target = $(target); 

    $('html, body').stop().animate({ 
     'scrollTop': $target.offset().top 
    }, 900, 'swing', function() { 
     window.location.hash = target; 
    }); 
    }); 
    }); 
+0

位置のハッシュを手作業で変更していますか?私はなぜクリックトリガメソッドが同じことをやっていないのだろうか?要素上で 'trigger(' click') 'を呼び出すと、ユーザーはそれをクリックするだけですが、トリガーではなく手動でクリックするとURLが変更されます! –

+0

私はanchor.hashについて知らなかった+1 – Musa

+0

私は言ったように。それはちょうど私が読んだものに似ていると思われ、私はそこに何か解決策を引き起こすことを望んだ!ごめんなさい。私がもっと助けることを望みます。 私はあなたが手動で何を意味するのか分かりません。 JSは単に#locationsをHTMLでマークしただけで動作します。 ここにあります[codepen](http://codepen.io/awaybackhome/full/WomzKM/) – awaybackhome

関連する問題