2017-05-10 4 views
-3

私はこの全く同じことを別のプロジェクトでやっていて、実際にはうんざりしています。私が作ったボタンがあります。それは<a>タグです。 <a>タグの内側には、アイコンとして<i class="fa">があります。ボタンの上にカーソルを置くと、<i>アイコンの色が変更されます。私はコードが正しいことを肯定的だ、ちょうど仕事を拒否する。ここに私のコードです:ボタンをホバーしてフォントの種類を変える驚くばかりのアイコン

HTML:

<div id="workspace"> 

    <a href="#" class="hlo-btn-round">Search <i class="fa fa-search fa-color" aria-hidden="true"></i></a> 

</div> 

CSS:

/* Control Icon Color */ 
.fa-color { 
    color: #99999a; 
} 

/* Control Icon Color on Hover (scripted) */ 
.fa-hover-color { 
    color: #323335; 
} 


/* Basic Round Button Styling */ 
.hlo-btn-round, .hlo-btn-round:link, .hlo-btn-round:visited, .hlo-btn-round:active, .hlo-btn-round:focus { 
    margin-top: 0px; 
    padding: 5px 20px; 
    border: 1px solid transparent; 
    border-radius: 25px; 
    line-height: 1.42857143; 
    font-family: "Trebuchet MS"; 
    text-decoration: none; 
    text-decoration-color: black; 
    vertical-align: middle; 
    background-color: white; 
    color: black; 
    cursor: pointer; 
    display: inline-block; 
} 

.hlo-btn-round:hover { 
    background-color: #CCCCD1; 
} 

スクリプト:

$('hlo-btn-round').hover(function(){ 
    $(this).children().switchClass('fa-color', 'fa-hover-color'); 
}, function(){ 
    $(this).children().switchClass('fa-hover-color', 'fa-color'); 
}); 
+0

コンソールでエラーが発生しますか? - あなたのコードで回答を掲載しましたが、うまくいくようです。ところで、私はjQueryに信頼性の問題があったことはありません。正しく使用していますか? – ochi

+0

コンソールにエラーはありません。私の投稿全体を読むと、私はそれを正しく使用していると思います。私は答えがあなたの投稿を参照してください。 – KeplerIO

+0

私は**答えるつもりだったが、その態度で、私はむしろ誰かを助けるために時間を費やすだろう。あなたが**正しく**使用していれば、あなたは助けを求めることはありません。明らかに、何かが間違っている、またはあなたがここで質問していないだろう - 良い一日を! – ochi

答えて

2

スクリプトは必要ないが、純粋なCSSで行う - ことができるはずです - 下記を参照:

/* Control Icon Color */ 
 
.fa-color { 
 
    color: #99999a; 
 
} 
 

 

 
/* Basic Round Button Styling */ 
 
.hlo-btn-round, .hlo-btn-round:link, .hlo-btn-round:visited, .hlo-btn-round:active, .hlo-btn-round:focus { 
 
    margin-top: 0px; 
 
    padding: 5px 20px; 
 
    border: 1px solid transparent; 
 
    border-radius: 25px; 
 
    line-height: 1.42857143; 
 
    font-family: "Trebuchet MS"; 
 
    text-decoration: none; 
 
    text-decoration-color: black; 
 
    vertical-align: middle; 
 
    background-color: white; 
 
    color: black; 
 
    cursor: pointer; 
 
    display: inline-block; 
 
} 
 

 
.hlo-btn-round:hover { 
 
    background-color: #CCCCD1; 
 
} 
 

 
.hlo-btn-round:hover .fa { 
 
    color: #323335; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> 
 
<div id="workspace"> 
 

 
    <a href="#" class="hlo-btn-round">Search <i class="fa fa-search fa-color" aria-hidden="true"></i></a> 
 

 
</div>

+0

実際に働いたうわー、私はそれが私がホバリングしていただけでなく、すべてのアイコンの色を変更することを期待していた。ニースの解決策!私はしかし、2行のようにそれをスクリプトする方法を見つけました:) – KeplerIO

1

編集: @ochiは非常によくあなたの質問以下のコメントで発見しているとして、あなたのエラーはかなり一般的なものです。あなたは実際には、あなたはおそらく$('.hlo-btn-round')を使用しなければならないとき、任意の

<hlo-btn-round></hlo-btn-round> 

...要素を選択することになる$('hlo-btn-round')を選択しています。

適切なIDEなど、より優れたコーディングツールを使用することで、このタイプのエラーを簡単に回避できます。これは、すぐに誤植を強調表示します。


初期の答え:.switchClass()は(私が前に聞いたことがないている - と私は正確に新人ではないよ)jQueryUIの一部であるように思われます。おそらくあなたは他のプロジェクトにロードしましたが、このプロジェクトにはロードしなかったでしょう。

jQueryのは、その条件のための条件をチェックし、true(クラスの追加)またはfalseを返します(クラスを削除)するために、第2のparamとしての機能を取ることができ、はるかに人気.toggleClass()を提供します。

しかし、実際にはJavaScriptは必要ありません。簡単です:

.parent .child {/* normal state CSS here */} 
.parent:hover .child {/* hover state CSS here */} 

...となります。またはparent .child:hover{}(必要に応じて、エフェクトをトリガーするエレメントに:hoverを設定します)。

+0

私はjQueryUIを使用してこの質問を明確にタグ付けしましたが、これは閉じています。 – KeplerIO

+1

@KeplerIOあなたのために閉鎖されているかもしれませんが、あなたが[so]であることを忘れないでください。これは、同様の質問/問題を持つ将来のすべての訪問者に開かれています。それとも簡単なのですか?*「私のコードを無料で修正した後、私はその質問を削除します。残りは気にしません」*あなたのためのサービスのタイプ?私はそうではないと思う。 –

関連する問題