2015-01-17 5 views
1
<select name="search[quick_dates]" id="search_quick_dates"> 
... 
</select> 

и JQuery:имя атрибута не распознается

f.find('select[name=search[quick_dates]]').bind('change', { form: f }, function(e){ 
... 
} 

выдает ошибку:

Uncaught Error: Syntax error, unrecognized expression: select[name=search[quick_dates]]

Могу ли я обновить мою JQuery вместо изменения имени атрибута?

+0

возможно дубликат [селектор JQuery для входов с квадратными скобками в атрибуте NAME] (http://stackoverflow.com/questions/2364982/jquery-selector-for-inputs- with-square-brackets-in-the-name-attribute) – JJJ

ответ

2

Чтобы использовать любой из метасимволов, таких как! "# $% & '() * +,./:; < =>? @ [] ^` {|} ~ Как буквальная часть имени , он должен быть экранирован обратным слэшем:

Изменить это:

f.find('select[name=search[quick_dates]]') 

для этого:

f.find('select[name="search\\[quick_dates\\]"]') 
+0

Пробовал это уже: 'Uncaught Error: Синтаксическая ошибка, нераспознанное выражение: select [name = search \ [" quick_dates "\]]' – 3zzy

+0

Нет .. вы попробовав его с одной обратной косой чертой .... должен быть двойной .... –

+0

Это двойное, скопированное отсюда, но хром сообщает об этом так (одиночная обратная косая черта) – 3zzy

1

Вам нужно будет избежать скобки Но одиночными обратной косой черты не избежит скобки, так как сингл. backsl пепел избежит символа в строке внутри функции, но вам нужна обратная косая черта, чтобы быть частью выражения или селектора, и, следовательно, вам также придется скрывать обратную косую черту с помощью другой обратной косой черты.

Попробуйте это:

f.find('select[name=search\\[quick_dates\\]]')