2016-11-18 5 views
0

У меня возникли проблемы с селекторами и скобками:Миграция из jquery1 в JQuery 2: селекторы

var myInputId = $(input).attr("id") 
"value-5379-32433[]" 

Это входной идентификатор для списка флажка. Я хочу, чтобы выбрать теперь все элементы, имеющие этот ID:

$("#" + myInputId); 
Uncaught Error: Syntax error, unrecognized expression: #value-5379-32433[] 

Это работает, если я убегаю скобки, но я считаю это решение довольно уродлив, как я должен использовать его во многих местах:

$("#" + inputId.replace("[", "\\[").replace("]", "\\]")) 

У вас есть лучшее решение этой проблемы?

РЕДАКТИРОВАТЬ Примечание. Это должно возвращать много элементов, так как есть много флажков с этим идентификатором.

EDIT 2: HTML-3 элементы, которые я хочу, чтобы выбрать:

<div class="type_mlist_check "> 
    <input type="checkbox" id="value-5379-32433[]" value="1" > 
    <input type="checkbox" id="value-5379-32433[]" value="2" > 
    <input type="hidden" id="value-5379-32433[]" value="-1"> 
</div> 
+1

'$ ('[id ="' + myInputId + '"]')'. Обратите внимание, что идентификаторы должны быть уникальными. – undefined

+0

@undefined, что вы записали, важно, у меня нет уникального идентификатора, у меня есть 3 флажка с одинаковым идентификатором, поэтому это не работает :( –

+0

На самом деле вы ошибаетесь, это работает для нескольких элементов. –

ответ

1

Поскольку селектор содержит использование attribute equals selector мета символов вместо.

$('[id="' + myInputId + '"]'); 

Или использовать один String#replace метод с классом символов регулярных выражений и глобального модификатора.

$('# ' + myInputId.replace(/[#;?%&,.+*~\':"!^$[\]()=>|\/@]/g,'\\$&')) 
+0

Мне нравится первое решение, но у меня есть 3 элемента с этим ID, это не работает. Второе решение выглядит хуже, чем 2 заменяет меня ... –

+0

@Nico lasThery: id должен быть уникальным ..... если его несколько, тогда используйте '$ ('[id ="' + myInputId + '"]: first')' –

+0

Я хочу, чтобы селектор возвращал все три элемента. (ID может быть одинаковым при использовании массивов форм с помощью 'myid []') –

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