2013-10-02 3 views
1

У меня странная проблема, где мой код;jQuery селектор работает отлично при использовании .change(), но не очень хорошо при использовании .live ('change')

$('input[name=attachment\\[\\]').change(function(e) { 
    alert("test"); 
}); 

работает отлично, он будет оповещать «тест», но это работает только для первого из моих полей ввода есть кнопка [добавить несколько вложений], который добавляет дополнительные поля ввода после загрузки страницы, так Я не могу использовать .Кнопку() для этого мне нужно использовать .live («изменение», функ .... вместо

Когда я использую этот код;.

$('input[name=attachment\\[\\]').live('change', function(e) { 
alert("test"); 
}); 

это уже не работает, я получаю эту синтаксическую ошибку;

Uncaught Error: Syntax error, unrecognized expression: input[name=attachment\[\] 

Спасибо за любую помощь. :)

+1

Вы знаете, 'жить()' нежелателен из JQuery 1.7, и удаляется с 1,9? Вы пытались использовать ['on()'] (http://api.jquery.com/on/)? –

+0

В какой версии jQuery? live() был удален в более поздних версиях! – adeneo

+0

, какую версию jQuery вы используете? .live() теперь удален. Используйте .on() вместо – Krishna

ответ

3

Выражение неверно. Вам не хватает закрывающей скобки для селектора атрибутов.

$('input[name=attachment\\[\\]]') 

Вы также можете использовать

$('input[name="attachment[]"]') 
//or 
$('input[name^=attachment]') 

Вместо .live вы, вероятно, следует использовать .on, как:

$(document).on("change", "input[name^=attachment]", function() { 
1

Если у вас есть динамические элементы, которые вы хотите прикрепить обработчики, вам нужно использовать on() делегата на родительский элемент:

$(document).on('change','input[name=attachment\\[\\]',function(e) { 
    alert("test"); 
}); 

PS: Я до сих пор путают о \\, но это должен по крайней мере дать вам в правильном направлении.

+0

О '\\\': http://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters -used-in-css-notation/ –

+0

@Sebastien-ha, спасибо большое ... узнал что-то новое сегодня. :) – Steve

+0

Спасибо, что работает. Как показывает Explosion Pills, в моем примере была синтаксическая ошибка, но новая вещь «on» отлично работает, хотя этот синтаксис выглядит немного странным для меня, я привык выбирать, затем привязывать к действию, затем запускать функцию, это выглядит странно, но я рассмотрю изменения в 1.9. :) –

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