Javascript 无法获取jQuery'+;变量+';内选择器工作

Javascript 无法获取jQuery'+;变量+';内选择器工作,javascript,jquery,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(typeo

我试图根据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();
var jTitle=($(this).text().substring(0,1));

//警报(jTitle类型) 如果要使用区分引号,请将
更改为


如果要使用区分引号,请将
更改为

逃避你的引用:

$(".jquery_image img:not([id='"+jTitle+"'])").hide();
$(".jquery_image img[id='"+jTitle+"']").show();
逃避你的引用:

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

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中是允许的。

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中是允许的。

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

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

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

$(".jquery_image img:not([id='"+jTitle+"'])").hide();
那不是“逃跑”,那是关闭和重新打开它们。那不是“逃跑”,那是关闭和重新打开它们。使用
\id
not
[id=…]
使用
\id
not
[id=…]