所有这些都工作得很好,刚才我重新考虑其他功能的代码,现在发生了这个愚蠢的问题,我不知道为什么会这样。
在jquery中为textarea标记
+'<div class="ckit-container__ft" data-ckit-footer>'
+'<form action="" class="ckit-composer-form">'
+'<div class="ckit-composer">'
+'<textarea data-ckit-composer-textarea placeholder="Add your reply" autocomplete="off" name="message" class="form-control ckit-composer__textarea"></textarea>'
+'</div>'
+'</form>'
+'</div>
绑定按键事件
jQuery(function($){
jQuery('body').bind('keypress','[data-ckit-composer-textarea]',function(event)
{
console.log(jQuery('[data-ckit-composer-textarea]').val());//returns empty
console.log(jQuery(this).val());//returns empty string
});
});
由于HTML标记存在于$(function(){..})
之外,我甚至尝试克隆模板并找到要替换的相关属性但没有运气。
var fullChatView = '<div class="ckit-container__ft" data-ckit-footer>'
+'<form action="" class="ckit-composer-form">'
+'<div class="ckit-composer">'
+'<textarea data-ckit-composer-textarea placeholder="Add your reply" autocomplete="off" name="message" class="form-control ckit-composer__textarea"></textarea>'
+'</div>'
+'</form>'
+'</div>';
var test = $(fullchatView).clone();//ReferenceError: fullchatView is not defined
var val = test.find('[data-ckit-composer-textarea]').val();
console.log(val);
答案 0 :(得分:1)
在您的第一个代码示例中,将.bind()
更改为.on()
并使用keyup
event,而不是keypress
event。
尝试以下方法:
jQuery(function($) {
// Note: The $ parameter passed in to this callback function
// represents the jQuery object, so you can safely use $ inside
// this function.
$('body').on('keyup', '[data-ckit-composer-textarea]', function() {
console.log($(this).val());
});
});
触发keypress
event时,textarea的值尚未更改为包含按下的键。
答案 1 :(得分:1)
答案 2 :(得分:0)
尝试使用 jQuery.parseHTML()
你在哪里进行克隆