我一直试图解决这个问题很长一段时间了。我不知道我做错了什么。
我知道你可以在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'变量时,它就像它应该的那样工作,但变量似乎不会返回任何值。
任何帮助将不胜感激。我在这个上花了几个小时:))
请记住,我是一名成为优秀程序员的初学者。
答案 0 :(得分:2)
选择器".lightbox_content#image_" + id
永远不会有意义。如果您有包含“id”值的图片,则只需"#image_" + id
。你现在所拥有的只有在“lightbox_content”元素本身具有你正在寻找的id时才会起作用。你可以在“#”之前加一个空格,但它(可能)毫无意义。 (查看您的实际HTML将有助于确认。)
但是,由于您已经获得了对目标DOM元素的引用(this
和e.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");