在 jQuery 属性等于值选择器中使用变量作为值
Posted
技术标签:
【中文标题】在 jQuery 属性等于值选择器中使用变量作为值【英文标题】:Using a variable for value inside jQuery attribute-equals-value selector 【发布时间】:2015-01-10 23:26:32 【问题描述】:我有一个div
,其属性为“文件夹名称”,可以是“鞋子”、“连衣裙”等。该 div 如下所示:
<div id='folder_template' class="openclosed_folder_icon subfolder" foldername="shoes">
<img class="folder_icon" src="images/folder_closed.png" />
<div class="folder_label">name</div>
</div>
我想搜索具有特定文件夹名称值的 div,并将其中的图像从“folder_closed.png”更改为“folder_open.png”,因此该图形看起来像一个打开的文件夹而不是一个关闭的文件夹。所以我有代码:
$("div[foldername=g.currentGallery]").attr('src','images/folder_open.png');
其中 g.currentGallery 是一个保存画廊名称的变量,例如“鞋子”,我想更改它。 但是这一行给了我错误:
语法错误,无法识别的表达式: div[文件夹名=g.currentGallery]
但这需要:
$("div[foldername='shoes']").attr('src','images/folder_open.png');
为什么我不能在这里使用变量?
【问题讨论】:
【参考方案1】:像这样:
$('div[foldername="' + g.currentGallery.replace(/"/g, '\\"') + '"]').attr(/* whatever */);
如果我们有示例:
var g = currentGallery: 'shoes["1"]' ;
那么选择器表达式就变成了:
div[foldername="shoes[\"1\"]"]
【讨论】:
这将允许任何字符,甚至是]
:..foldername='" + g.currentGallery + "']...
...参见:jsfiddle.net/fiddleyetu/k0976349@salmanA?
@PeterKA:是的,当]
出现在属性值中时,引号就变得必要了。修改了答案。
+1 用于字符串中的引号转义。无论如何,总是引用永远不会有坏处。 :)
我的代码没有任何引号可以转义,所以简化的解决方案是 $('div[foldername="' + g.currentGallery + '"]').find('img').attr('src','images/folder_open.png');
谢谢以上是关于在 jQuery 属性等于值选择器中使用变量作为值的主要内容,如果未能解决你的问题,请参考以下文章