无法在选择器工作中获得jQuery'+ variable'

时间:2011-06-22 11:10:22

标签: javascript jquery

我正在尝试根据h2标签内的第一个字符更改图像,该标签对应于名为jquery_image的div中图像集合的id

如果我有以下代码,那么我的图片将按预期更改

$(".jquery_image img:not([id=1)").hide();
$(".jquery_image img[id=2]").show();

然而,只要我尝试使用变量jTitle更改图像就没有任何反应

var jTitle = ($(this).text().substring(0,1));   
// alert(typeof jTitle); << string
$(".jquery_image img:not([id='+jTitle+'])").hide();
$(".jquery_image img[id='+jTitle+']").show();

为什么这段代码不起作用?我究竟做错了什么。 感谢

5 个答案:

答案 0 :(得分:2)

$(".jquery_image img:not([id='"+jTitle+"'])").hide();

$('.jquery_image img:not([id="'+jTitle+'"])').hide();

答案 1 :(得分:1)

您正在使用差异化引号,将'更改为"

$(".jquery_image img:not([id="+jTitle+"])").hide();
$(".jquery_image img[id="+jTitle+"]").show();

答案 2 :(得分:1)

逃避你的报价:

$(".jquery_image img:not([id='"+jTitle+"'])").hide();
$(".jquery_image img[id='"+jTitle+"']").show();

答案 3 :(得分:0)

jTitle需要在双引号字符串中完全之外,否则您所做的只是将文字字符串[id='+jTitle+']放在选择器中:

$(".jquery_image img:not([id='" + jTitle + "'])").hide();

无论如何,根据@Raynos的评论,您应该使用#选择器来匹配ID,这使代码更容易遵循:

var sel = '#' + jTitle;
$(sel).show();
$('.jquery_image img').not(sel).hide();

顺便说一下,我似乎记得读过旧版浏览器不支持纯数字ID,尽管HTML5允许使用它们。

答案 4 :(得分:0)

你传递的表达式是jquery是一个标准字符串,无法访问当前作用域的变量。你必须自己构建字符串:

$(".jquery_image img:not([id='"+jTitle+"'])").hide();