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

Javascript 无法在jQuery选择器中使用变量,javascript,jquery,selector,lightbox,Javascript,Jquery,Selector,Lightbox,我一直在努力解决这个问题很长时间了。我不知道我做错了什么 我知道您可以在jQuery选择器中使用一个变量,它的工作原理如下: var dude = "_world"; $("#hello" + dude).hide(); 所以我想在jQuery lighbox的代码中使用它: $(document).ready( function() { $('.gallery_image_preview').click( function(e) { id = e.t

我一直在努力解决这个问题很长时间了。我不知道我做错了什么

我知道您可以在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”变量时,它的工作原理与预期的一样,但该变量似乎不返回任何值

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

请记住,我是一个初学者,正在成为一名伟大的程序员。

选择器
”。lightbox\u内容、图像+id
永远不会有意义。如果您有带有“id”值的图像,您只需要
“#image_u3;”+id
。只有当“lightbox\u content”元素本身具有您要查找的id时,您现在所拥有的才会起作用。你可以在“#”前面加一个空格,但它(可能)毫无意义。(查看您的实际HTML将有助于确认这一点。)

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

    $(this).fadeIn();

首先,您不需要通过在id选择器前面加上类名来过滤id选择器,这不会提高性能。而且你做得不对,这可能就是它失败的原因

或者:

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

or

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

另外,从您的评论来看,问题可能在于检索id。。你为什么不试试:

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

你的HTML是什么样子的?你意识到你有一个额外的前导引语
在您发布的jQuery中,
$
id
以数字开头的属性无效,将导致错误。尝试将id更改为以
a-Z
字符开头。无需筛选id选择器,这不会提高性能。如果您还发布相关HTML的示例,这会有很大帮助,因为不清楚您试图控制的是什么。is
console.log(e.target)你期望什么?调试101。尽管如此,
“#image_uu”+id+”。lightbox_content“
可能会工作。谢谢,我尝试使用$(“#image_uuu”+id),但没有工作。但是,如果我使用$(“#image"+5),它会突然起作用。“这个”不起作用,因为我需要“图像”这个词。那么你的“id”值到底是什么?如果你不发布HTML,我们也帮不了你@kirilloid是的,可能会,但我们对标记知之甚少。