2017-01-25 14 views
0

と[のhref =「#オープンサイト」] doesntの仕事をクリックしてください:私は#オープンサイト、ショーアップをクリックするとjQueryの私はこのようになりますナビゲーション持っているリンク

<ul> 
    <li><a href="index.html#open-site">Test</a></li> 
    <li><a href="#open-site">Test</a></li> 
    <li><a href="test.html#open-site">Test</a></li> 
</ul> 

を。 imがindex.htmlにあり、「index.html」なしで2番目のリンクの例としてクリックすると、すべて正常に動作し、divが表示されます。

ですが、index.html上にあって最初のリンクをクリックしても何も起きません。サイトはリロードされず、クリック機能は起動されません。

何私がしたいことはindex.htmlにして、私はクリック」のindex.html#オープンサイトの上のイムがある場合は、ページが文句を言わないリロードが、クリック機能があることということである私のjqueryのコードは、この

jQuery('a[href="#open-site"]').click(function() { 
    jQuery('#content').animate({"left": "0px"}); 
}) 

のように見えますトリガされ、divが表示されます。

他のサブページ(test.htmlなど)に「index.html#open-site」をクリックすると、index.htmlがロードされ、すぐにdivが表示されます。

+0

いけない。このためにアンカーを使用する上で

jQuery('a').each(function(index) { // we search the links with param in href attr from all links to attach the function if (jQuery(this).attr('href').search('#open-site') !== -1) { jQuery(this).click(function (e) { // e = event // e.preventDefault stops default behavior (changing location) e.preventDefault(); jQuery('#content').animate({"left": "0px"}); }); } }); 

例。独自の属性を設定することができます。このようなもの: jQuery( 'a [yourATTR = "open-site"]')クリックしてください(function {){ jQuery( 'content')} animate({"left": "0px"}); }) –

答えて

0

オプションごとにセレクタが必要です。

<ul> 
    <li id="site1"><a href="index.html#open-site">Test</a></li> 
    <li id="site2"><a href="#open-site">Test</a></li> 
    <li id="site3"><a href="test.html#open-site">Test</a></li> 
</ul> 

次に、これらのセレクタでイベントをトリガしようとします。

+0

はい、私は同じと思っていましたが、問題が1つあります。 メニュー項目ごとに1つのdivがありません。代わりに、コンテンツがCMS上にロードされる「ページ」と呼ばれる1つのdivがあります。 私はそれをあなたのやり方で行う場合は、私はサブページ私は、私はすべてのサブページのjquery関数を定義する必要がありますについては、ページのdivにIDまたはクラスを追加するCMS上の方法を見つける必要があります。これはあまり動的ではありません。 リンクをクリックするとページが表示されますが、jquery関数を起動してページをリロードしないだけです。もう1つのサブページでサイトがリロードされてdivが表示される場合は、既に正常に動作しています。 – user3660653

0

私はあなたが欲しいと思いました。それがあなたを助けることを願う。

厳密に従うセレクタで要素を検索します。

jQuery('a[href="#open-site"]') 

それは同じパラメータを持つすべての要素を検索するにHREF =#オープンサイト

要素のみを返しますが、上記の例のように厳密に従って、あなたが必要な要素を見つけるために、すべての要素をフィルタリングしたくありません。 私のコード例は理想的ではありませんが、あなたができることの例です。 jsfiddle

+0

ありがとうございました!これは私がやりたいことです。しかし、私はこれがクリックされたリンクが現在のページと等しい場合にのみ発生します。だから私が必要とするのは、現在のページとクリックされたリンクを比較するクエリの方が多い場合です。それがqualsならe.prevenDefault();を実行します。そうでない場合、クリックされたリンクにリダイレクトします。その問題は、この "www.x.com/index.html"のようなURL全体から "index.html"または "index"部分だけを取得する方法を知らないということです。私は最終的なURLを知らないので、動的でなければなりません。 – user3660653

+0

申し訳ありませんが、遅い答え:) あなたは、イベントを停止するかどうかを決定するためにURLとリンクのhrefをチェックすることができます。 –

+0

例: if(jQuery()。attr( 'href')。split( '#')[0] === '' || window.location.href.search(jQuery()。attr( 'href ').split('# ')[0])> -1){ \t // preventDefault&animate } このチェックは、イベントストップとアニメーション機能をラップする必要があります –

関連する問題