2012-03-09 11 views
0

javascriptとjqueryを使用してスクリプトを作成しようとしていますが、マウスが別の要素にマウスを乗せたときに反応する要素が1つあります。私はこの時点までに大きな助けをしてきましたが、私は何かをここで混乱させていると思います。私は一方向ではなく他の方向で働いている。それが働いている方向では、アンカー要素の中にテキストがあります。それが働いていない方向には、アンカーの中にイメージがあります。それは、私を混乱させるかもしれない、確かではない。 http://jsfiddle.net/vZAYY/14/ javascriptがli要素を見つけていないようです(-1を返します)img in anchorのホバー効果

もう1つの奇妙なことは、フルサイト私はローカルで実行しています)どちらも動作しませんが、jsフィドルを構築するには、コードを直接コピーしました。それはdrupalのあるサイトにあり、スクリプトは両方の要素のホバーから-1を返しています。

提案がありますか?

+0

'parent()'を複数回呼び出すのではなく 'closest()'を使ってマイナーな更新を行います。これを最小限の例に減らすことができますか?あなたがリンク/画像を動かすときに何が起こるべきかを明確に述べる –

+0

closest()を使ってみましたが、動作させることができませんでした。理想的には、画像が上に置かれたときにリンク(テキスト)が色が変わり、画像がわずかに不透明になり、リンク(テキスト)が上に乗ったときも同じことが起こるのが理想です。私はそれがjavascriptをより簡単にするならば、クラスを変更することができます。あなたが教えてくれないと、私はJavaScriptについて多くのことを知りません。どんなアドバイスも大歓迎です。 – jaron

答えて

0

コードがちょっと混乱していますが、何かが-1を返す場合は、index()関数でなければなりません。確かに言うことはできませんが、あなたの問題は、ここで次のようになります。

var x = $(this).parent().parent().parent("li").index(); 
$(".mainNavigation ul li:eq(" + x + ")").addClass("active"); 

私はparent().parent().parent('li').index()は最高のアイデアであるかわかりません。つまり、index()は指定できるコンテキストを取ります。あらかじめセレクタをキャッシュすることをお勧めします。
:eqの2行目では、より高速で予測可能なeq()を使用します。