无法在jQuery选择器中使用变量

时间:2012-04-15 12:32:18

标签: javascript jquery selector lightbox

我一直试图解决这个问题很长一段时间了。我不知道我做错了什么。

我知道你可以在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'变量时,它就像它应该的那样工作,但变量似乎不会返回任何值。

任何帮助将不胜感激。我在这个上花了几个小时:))

请记住,我是一名成为优秀程序员的初学者。

2 个答案:

答案 0 :(得分:2)

选择器".lightbox_content#image_" + id永远不会有意义。如果您有包含“id”值的图片,则只需"#image_" + id。你现在所拥有的只有在“lightbox_content”元素本身具有你正在寻找的id时才会起作用。你可以在“#”之前加一个空格,但它(可能)毫无意义。 (查看您的实际HTML将有助于确认。)

但是,由于您已经获得了对目标DOM元素的引用(thise.target),您可以直接使用它:

    $(this).fadeIn();

答案 1 :(得分: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");