Я пытаюсь динамически генерировать код встраивания 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(), но изменил его из-за того, что я собираюсь, это та же проблема).
'$ add_link_box' не перестает указывать на правильный элемент, является ли это точной структурой кода в реальном приложении? это работает для меня http://jsfiddle.net/Wwn3g/ – helion3
Хмм, да, ссылка, которую вы включили, работала и на меня! Код, который вы видите, более или менее тот же, что и некоторые другие нерелевантные текстовые поля, которые инициализируются и добавляются, чтобы упростить чтение. Вероятно, я вернусь и посмотрю на него с новыми глазами, потому что я думал, что этот код тоже подходит, так что, возможно, я упускаю из виду вопиющую опечатку. –
Вероятно, вам не хватает какой-либо проблемы с объемом. События 'on' вызывают в области, в которой' $ add_link_box' ничего не значит. – helion3