2014-02-12 3 views
0

Я пытаюсь динамически генерировать код встраивания html как пользовательский тип в некоторой информации в соседнем текстовом поле. Проблема, с которой я сталкиваюсь, заключается в том, что дескриптор $ add_link_box, по-видимому, ломается внутри обработчика события on on и не меняет значение текстового поля $ add_link_box.jQuery обработка дескриптора события

$add_link_box = $("<input>", {type: "text", class: "code_div_text_field"}); 
$link_text_box = $("<input>", {type: "text", class: "link_text_box"}); 
$code_div.append($link_text_box); 
$code_div.append($add_link_box); 

$link_text_box.on('change keyup paste',function(event) { 
    $add_link_box.val($(this).val()); 
}); 

Если я вместо этого использовать:

$('.code_div_text_field').val($(this).val()); 

затем текстовое поле заселяет правильно. Очевидным ответом является то, что обработчики элементов не сохраняются в асинхронных обратных вызовах, однако я использую этот же синтаксис по всему коду моей программы с элементами «div» без каких-либо проблем. Есть ли какая-то разница в том, как jQuery обрабатывает элементы «ввода» и «div», которые объясняли бы эту несогласованность?

(У меня также был $ link_text_box.val() вместо $ (this) .val(), но изменил его из-за того, что я собираюсь, это та же проблема).

+1

'$ add_link_box' не перестает указывать на правильный элемент, является ли это точной структурой кода в реальном приложении? это работает для меня http://jsfiddle.net/Wwn3g/ – helion3

+0

Хмм, да, ссылка, которую вы включили, работала и на меня! Код, который вы видите, более или менее тот же, что и некоторые другие нерелевантные текстовые поля, которые инициализируются и добавляются, чтобы упростить чтение. Вероятно, я вернусь и посмотрю на него с новыми глазами, потому что я думал, что этот код тоже подходит, так что, возможно, я упускаю из виду вопиющую опечатку. –

+2

Вероятно, вам не хватает какой-либо проблемы с объемом. События 'on' вызывают в области, в которой' $ add_link_box' ничего не значит. – helion3

ответ

-1

Я думаю, что проблема может быть порядка двух входов, так как ваш код поставляется:

$code_div.append($link_text_box); 
$code_div.append($add_link_box); 

, что первый является link_text_box элемент на самом деле переплетены событие.

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