Javascript 无法在jQuery选择器中使用变量
我一直在努力解决这个问题很长时间了。我不知道我做错了什么 我知道您可以在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
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的示例,这会有很大帮助,因为不清楚您试图控制的是什么。isconsole.log(e.target)代码>你期望什么?调试101。尽管如此,“#image_uu”+id+”。lightbox_content“
可能会工作。谢谢,我尝试使用$(“#image_uuu”+id),但没有工作。但是,如果我使用$(“#image"+5),它会突然起作用。“这个”不起作用,因为我需要“图像”这个词。那么你的“id”值到底是什么?如果你不发布HTML,我们也帮不了你@kirilloid是的,可能会,但我们对标记知之甚少。