2013-07-16 3 views
0

Я пытаюсь показать элемент 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. Вы используете селектор атрибута, но с неверным именем (@name). Имена атрибутов не могут начинаться с @.

  2. Также не нужно использовать обратную косую черту, если вы используете кавычки (что вы, single quotes are fine). (А те, которые вы не заканчивающиеся как часть селектора, поставить обратную косую черту в селекторе, когда селектор находится в строке JavaScript, вы должны обратный слеш как \\.)

  3. radio ISN 't имя тега.

Может быть, вы хотели:

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

JQuery предлагает расширение, которое :radio, но использовать его не рекомендуется, по причинам, рассмотренным on its API page (в основном, Jquery не может передать его в родной браузер querySelector/querySelectorAll).

+1

Это сработало отлично. Огромное спасибо! – pedropeixoto

+0

@PedroPeixoto: Добро пожаловать! –

Смежные вопросы