0

如果在结帐过程中选择了特定的单选框,我将尝试显示 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]'] 

这里有什么问题?

4

1 回答 1

4

那里有几个问题:

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

  2. 只要您使用引号(就是这样,单引号就可以),也不需要反斜杠。(而您并没有将最终作为选择器的一部分,在选择器位于JavaScript字符串中时,在选择器中放置后斜切,您必须逃脱后斜线为\\。)

  3. radio不是标签名称。

也许你想要:

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

jQuery 提供了一个扩展名:radio,但不推荐使用它,原因在其 API 页面上讨论过(基本上,jQuery 不能将其交给浏览器的原生querySelector/ querySelectorAll)。

于 2013-07-16T14:09:53.573 回答