だから、問題は、動的なセレクタ(「IMG番号」+ J)で、あなたのハンドラを設定するが、これは動作しませんしようとしているということです。 1つは、その方程式はjが未定義のときにページロード時に1回だけ評価されます。
だから、あなたの代わりにこれをしたい:
- ターゲットオーバー...いっそのこと、あなたのマウスのための唯一のimgタグ、あなただけにイベントハンドラを添付することができますので、あなたの特別なイメージにすべて同じCSSクラスを与えますそれら。それはより効率的です。
イメージがマウスの上や外にマウスで移動しているときは、id属性を取得し、そこから番号を抽出し、それを使って表示する適切な範囲のセレクタを構築します。
var get_span_from_image = function(image){ var image_id = image.attr( "id"); var matches = image_id.match(/ theImg(\ d +)/); if(matches)は$( "theSpan" + matches [1])を返します。 return $(); //空のjQueryの選択を返します。 }; 。 $( "IMG")ホバー( 関数(){//マウスオーバー get_span_from_image($(この))を表示(); を}、 関数(){//マウスアウト get_span_from_image($(この))。hide(); } );
注:への「リンク」2つのノード一緒に、より良い方法がありますが、これはちょうどあなたが持っている現在の構造を持つあなたの質問に答えることです。
UPDATE:
を二つのノードを一緒にリンクするためのいくつかのアイデアは、だからではなくid属性から番号を抽出しようとする、より良い方法は、それは兄弟だについて画像の1またはスパンのいずれかを伝えることであろう。あなたは、例えば、このような出力にHTMLを、可能性:もちろん
<img id="theImg1" data-target="theSpan1" class="hoverable" src="..."/>
....
<span id="theSpan1">...</span>
今、あなたの考えは何でもかまいません - あなたは、番号の値か何かを使用する必要はありません。
次に、あなたのホバーコードは非常に単純に次のようになります。
var get_span_from_image = function(image) {
var span_id = image.data("target");
return $("#" + span_id);
};
$("img").hover(
function() { // mouse over
get_span_from_image($(this)).show();
},
function() { // mouse out
get_span_from_image($(this)).hide();
}
);
は、この情報がお役に立てば幸い!
を? – MacPrawn
はい、私はループの反復でそれを追加しました – Felnyr