未捕获错误:语法错误,无法识别的表达式。逃脱角色?

时间:2013-07-16 14:05:57

标签: javascript jquery magento

如果在结帐过程中选择了特定的广播框,我正在尝试显示ID为“在线付款”的div元素。

到目前为止,我有以下内容:

<div id="online-payments" style="display: none;">
    Test
</div>

对于javascript:

jQuery(document).ready(function(){
jQuery("radio[@name='payment\[method\]']").click(function(){
if (jQuery("radio[@name='payment\[method\]']:checked").val() == 'checkmo')
jQuery("#online-payments").show();
});
});

这是一个Magento商店,所以我使用无冲突模式,因为原型库。

问题归结于收音机的名称。 Magento默认情况下付款[方法] (我试图改变它,但看起来它会比我预期的更多的工作)。

所以它真的归结为逃避那些括号[],我以为我做了,但即便如此它也给我这个错误:

Uncaught Error: Syntax error, unrecognized expression: radio[@name='payment[method]'] 

这里有什么问题?

1 个答案:

答案 0 :(得分:4)

那里有几个问题:

  1. 您正在使用属性选择器,但名称无效(@name)。属性名称不能以@开头。

  2. 只要您使用引号(single quotes are fine),也不需要反斜杠。 (并且你拥有的那些不是作为选择器的一部分结束,当选择器在JavaScript字符串中时在选择器中放置反斜杠,你必须将反斜杠转义为\\。)

  3. radio不是代码名称。

  4. 也许你想要:

    jQuery("input[type=radio][name='payment[method]']")
    

    jQuery提供了一个:radio的扩展名,但不建议使用它,原因是on its API page(基本上,jQuery无法将其移交给浏览器的本地querySelector } / querySelectorAll)。