2012-04-15 8 views
0

私は長い間この問題を解決しようとしてきました。私は何が間違っているのか分かりません。jQueryセレクタで変数を使用できません

私はあなたがjQueryのセレクタに変数を使用することができ、それが動作しますが、次のように知っている:

var dude = "_world"; 
$("#hello" + dude).hide(); 

だから私はjQueryのlighboxのために、このコードでそれを使用したい:

$(document).ready(
function() 
{ 
    $('.gallery_image_preview').click(
    function(e) 
    { 
     id = e.target.id; 
     $('#lightbox_background').fadeIn(); 

     $(".lightbox_content#image_" + id).fadeIn(); 

    }); 

    $('.lightbox_content').find('.lightbox_close').click(
    function() 
    { 
     $('#lightbox_background, .lightbox_content').fadeOut(); 
    }); 

}); 

基本的に画像でdivをアニメーション化します。しかし、私はこれを動作させることはできません。 'id'変数を数値に置き換えると、それは想定されているように機能しますが、変数は何らかの値を返すようには見えません。

ご協力いただければ幸いです。私はこの1時間で時間を費やしました:)

私は偉大なプログラマーになるための旅の初心者です。

+2

あなたが何をHTMLのように見える? '$'の前に '' '$'? –

+0

の '' id'属性の前に余分な引用符 '' 'があることがわかっていると、あなたはエラーが発生します。 '文字 –

+0

idセレクタをフィルタリングする必要はありませんが、パフォーマンスを向上させることはありません – Baz1nga

答えて

2

セレクタ".lightbox_content#image_" + idは意味をなさないでしょう。 「id」値の画像がある場合は、"#image_" + idが必要です。あなたが今持っているのは、あなたが探しているidが "lightbox_content"要素自身にある場合にのみ機能します。あなたは "#"の前にスペースを入れることができますが、(おそらく)無意味です。 (実際のHTMLはそれを確認するに役立つだろう見て。)

しかし、あなたはすでに(両方thise.targetで)ターゲットDOM要素への参照を持っているので、あなただけの直接それを使用することができます

$(this).fadeIn(); 
+0

でも、 "#image_" + id + ".lightbox_content" 'が働くかもしれません。 – kirilloid

+0

ありがとう、ありがとうございました、私は謝罪しました。私は$( "#image_" + id)を使ってみましたが、うまくいきませんでした。しかし、私が$( "#image _" + 5)を使用すると、突然動作します。私はそこに "image_"という言葉が必要なので、 "これ"はうまくいかないでしょう。 – Revangelis

+0

"id"の値はどういう意味ですか? HTMLを投稿しないと、私たちは手伝ってくれません。 @kirilloidはいそうかもしれないが、私たちはマークアップについてあまり知らない。 – Pointy

0

まず、クラス名を前に付けてIDセレクタをフィルタリングする必要はありません。パフォーマンスが向上しません。あなたはそれを間違ってやっています。おそらくそれが失敗している理由です。

どちらかが行います。

$("#image_" + id).fadeIn(); // the correct way 

or 

$(".lightbox_content #image_" + id).fadeIn(); //which will work but is useless prepending the class selector 

を参照してください:あなたのコメントからもhttp://jsfiddle.net/KpUZX/

問題は、IDを取得してあるかもしれない...なぜあなたがしようといけない:

id = $(this).attr("id");