2016-07-06 10 views
0

ページの読み込み中に読み込みアイコンを表示したいと思います。hrefが '#'で終わらないアンカーのCSSセレクタ

私はHTML、CSS、およびJSコードを使用しています。

HTML:

<div class="loader-icon"></div> 

JS:

$(window).load(function() { 
    $(".loader-icon").fadeOut("slow"); 
}); 

$('a').click(function(){ 
    $(".loader-icon").fadeIn("slow"); 
}) 

div.loader-iconためのローディングアイコンを表示するためにいくつかのCSS。

別のページにリダイレクトするリンクをクリックしても問題ありません。しかし、リンクが別のページにリダイレクトされていないときは機能しません。 「トップに戻る」アイコンをクリックすると、読み込み中のアイコンが表示され続けます。フェードアウトしません。

と仮定します。

<a href="http://example.com/page/">Page Now</a> 
<a href="http://example.com/page/#">Back to Top</a> 
<a href="http://example.com/page2/">Page Other</a> 

それはトップに戻る 'の「ページその他」のために動作しなくなります。

したがって、hrefsが '#'で終わらないアンカーのセレクタを選択したいと思います。あるいは、別の簡単なトリックを使って同じことをするより良い方法がありますか?

+1

クリックして別のページに移動すると、なぜ機能をクリックする必要がありますか? ....あなたのコードを更新し、あなたのローダーアイコンを表示するだけで、ロード機能が必要です – DaniP

+0

これを再現するデモを作成します。 – charlietfl

+0

@DaniPので、2番目のjsコードを削除する必要がありますか? – Rinku

答えて

4

#を含む他のURLについて心配する必要はありますか?そうでない場合は、このセレクタにバインドすることができます。

a:not([href*='#']) 

URLに#が含まれていないリンクのみをターゲットにします。また、#で終わっていない任意のリンクについて#で始まり、そして

a:not([href$='#']) 

しない任意のリンクをターゲットとするには、この

a:not([href^='#']) 

を使用することができます。うまくいけば、これらのうちの1つが役立ちます!

+0

CSSのみの解決策として、これは私の答えの選択肢です。共有してくれてありがとう。 –

+0

これは実際にはWordPressのテーマです。私は2番目のjsコードを削除する必要がありますと思う。それはカートをカートに入れるAJAXボタンに問題が生じるからです。カートに入れるリンクは最後に#がありません。 – Rinku

+0

さらに深く進む必要があります!あなたは必要なセレクタではありません – will

1

あなたはnot()

$('a').not('[href$="#"]').on("click", function(e) { 
 
    $(this).toggleClass("active"); 
 
    e.preventDefault(); 
 
});
.active{ background-color: lime; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="#">Has # at end</a> 
 
<a href="http://www.google.com">FOO</a> 
 
<a href="http://www.google.com">BAR</a>

ends with selectorを使用することができますが:not() selectorを使用することができますが、jQueryの勧告を引用する:

.NOT()メソッドを提供することになります複雑なセレクタや変数をa:not()セレクタfiltにプッシュするよりも読みやすい選択が可能です。エル。ほとんどの場合、より良い選択です。

-2

ウィンドウがロードされたときにイベントを追加するため、アイコンがフェードアウトするようにページを更新する必要があるため、機能しません。

トップに戻るリンクをクリックしたときにもイベントを追加します。

<a href="http://example.com/page/#" onclick="myFunct();">Back to Top</a> 

... 
function myFunct(){ 
$(".loader-icon").fadeOut("slow"); 
} 
+2

これはOPの質問に対する答えではありません。 –

+0

また、なぜonclickを使用しますか?これは1990年代ではない – charlietfl

関連する問題