0

私は長い間この問題を解決しようとしてきました。何が間違っているのかわかりません。

jQueryセレクターで変数を使用できることはわかっていますが、次のように機能します。

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

だから私はjQueryライトボックスのこのコードでそれを使用したかった:

$(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'変数を数値に置き換えると、想定どおりに機能しますが、変数はどういうわけか値を返さないようです。

どんな助けでもいただければ幸いです。私はこれに何時間も費やしました:)

私は優れたプログラマーになるための旅の初心者であることを忘れないでください。

4

2 に答える 2

2

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

thisただし、ターゲットDOM要素(との両方)への参照はすでにあるので、e.targetそれを直接使用できます。

    $(this).fadeIn();
于 2012-04-15T12:34:56.877 に答える
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");
于 2012-04-15T12:43:10.457 に答える