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 将有助于确认这一点。)

但是,由于您已经获得了对目标 DOM 元素的引用(在this和中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 回答