Javascript / jQuery中嵌套的单引号/双引号

时间:2011-04-18 15:26:42

标签: javascript jquery

我原以为单引号/双引号在Javascript中是可以互换的。所以在jQuery函数中,任何人都可以解释原因:

$('input:radio[name='+foo+'][value='+bar+']').attr('checked', true);

有效,但

$('input:radio[name="+foo+"][value="+bar+"]').attr('checked', true);

不? (如果foobar都是字符串。)

双引号中的单/双单嵌套不起作用吗?

6 个答案:

答案 0 :(得分:2)

你不能在jQuery中嵌套变量,我知道你可以在php而不是jQuery中这样做,只需使用你的第一个选项:

$('input:radio[name='+foo+'][value='+bar+']').attr('checked', true);

或者这样做(我改变了你的第二个选项):

$('input:radio[name="'+foo+'"][value="'+bar+'"]').attr('checked', true);

答案 1 :(得分:2)

它有效,但它们需要匹配。你的开场报价是单一的,然后你试图用双关闭它。这不起作用。

//\/SINGLE          \/DOUBLE
$('input:radio[name="+foo+"][value="+bar+"]').attr('checked', true);

这样做的结果是javascript不知道您正在尝试终止字符串文字并附加变量值。它假定您仍然在字符串文字中,并希望"字符作为其中的一部分。只要引号匹配,就没有区别:

var foo = "hello " + world;

var foo = 'hello ' + world;

答案 2 :(得分:2)

如果在另一个引用中使用一种引用类型,在大多数现代JavaScript引擎中,它会将内部,备用类型引号视为引号字符而不是字符串分隔符。

答案 3 :(得分:2)

“可互换”并不意味着“任意”。

您是否可以选择使用一组单引号或双引号来分隔字符串文字,但单个字符串文字的起点和终点分隔符当然必须相同。

答案 4 :(得分:1)

你不需要在foo周围加上引号。

$('input:radio[name=food]') 

将自行完成。

答案 5 :(得分:0)

'input:radio[name="+foo+"][value="+bar+"]'

不起作用,因为它是一个(单个)大字符串。您没有注入foobar变量。

你必须这样写:

'input:radio[name="' + foo + '"][value="' + bar + '"]' 

简化示例:

'Value: " + foo + "'(BAD)

'Value: "' + foo + '"'(好)