在jQuery attribute-equals-value选择器中使用变量作为值

时间:2014-11-13 17:55:04

标签: javascript jquery variables jquery-selectors css-selectors

我的div属性为" foldername"这可能是像鞋子,#34;礼服,"等等。 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> 

我想搜索具有foldername特定值的div,并从&#34; folder_closed.png&#34;中更改其中的图像。 to&#34; folder_open.png,&#34;所以图形看起来像一个打开的文件夹而不是一个封闭的文件夹。所以我有代码:

$("div[foldername=g.currentGallery]").attr('src','images/folder_open.png'); 

其中g.currentGallery是一个包含图库名称的变量,例如&#34; shoes,&#34;我想改变。 但这一行给了我错误:

  

语法错误,无法识别的表达式:   DIV [FOLDERNAME = g.currentGallery]

但它需要:

$("div[foldername='shoes']").attr('src','images/folder_open.png');

为什么我不能在这里使用变量?

1 个答案:

答案 0 :(得分:1)

像这样:

$('div[foldername="' + g.currentGallery.replace(/"/g, '\\"') + '"]').attr(/* whatever */);

示例如果我们有:

var g = { currentGallery: 'shoes["1"]' };

然后选择器表达式变为:

div[foldername="shoes[\"1\"]"]