如果在结帐过程中选择了特定的广播框,我正在尝试显示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]']
这里有什么问题?
答案 0 :(得分:4)
那里有几个问题:
您正在使用属性选择器,但名称无效(@name
)。属性名称不能以@
开头。
只要您使用引号(single quotes are fine),也不需要反斜杠。 (并且你拥有的那些不是作为选择器的一部分结束,当选择器在JavaScript字符串中时在选择器中放置反斜杠,你必须将反斜杠转义为\\
。)
radio
不是代码名称。
也许你想要:
jQuery("input[type=radio][name='payment[method]']")
jQuery提供了一个:radio
的扩展名,但不建议使用它,原因是on its API page(基本上,jQuery无法将其移交给浏览器的本地querySelector
} / querySelectorAll
)。