我有一个有keyup
事件的textarea来显示渲染输入的预览。但是,我希望在加载元素后立即显示相同的预览。
$('textarea[name="ay[description]"]').on('keyup', function(e){
最简单的是在声明结束时发起.trigger('keyup')
。但是,是否有load
,onload
或ready
这样的事件,我错过了不同的名字?
答案 0 :(得分:0)
onLoad事件被称为“加载”,但它仅针对某些对象/元素(iframe,窗口,文档)触发。
当load元素和所有子元素都有时,load事件被发送到元素 已完全装满。此事件可以发送到任何元素 与URL相关联:图像,脚本,框架,iframe和 窗口对象。
答案 1 :(得分:0)
可以使用文档上的就绪事件。只需重构显示代码,这样您就可以在keyup处理程序和文档准备好时调用它们。如果需要处理复制/粘贴,可以根据需要对其他事件进行扩展(例如“更改”)。
function previewText( input, display )
{
// do the preview of the input element in the display div
}
$(function() {
previewText($('textarea[name="ay[description]"]'),$('#ay-preview'));
$('textarea[name="ay[description]"]').on('keyup change',function() {
previewText($(this),$('#ay-preview'));
});
});
答案 2 :(得分:0)
如果我理解正确,您希望在每个键盘后呈现预览,并且最初在页面加载完成后呈现。你这样做:
$(document).ready(render);
$('textarea[name="ay[description]"]')
.on('keyup', render);
var render = function() {
// DO render stuff
}
答案 3 :(得分:0)
注意强>
OP指出,除非另有说明,否则并不总是需要命名空间事件。非常正确:
$(document).ready(function(){
var $aydesc = $('textarea[name="ay[description]"]'),
$goeshere = $('#goeshere');
$aydesc.on('keyup.preview', function(e){
$goeshere.text($(this).val());
});
$aydesc.trigger('keyup');
});
我不一定建议你总是需要命名空间事件来实现这一点,所以我通过回答进行了更新。
如果您在该元素上有多个keyup
处理程序,我认为您可能会发现namespaced event很有用:
$(document).ready(function(){
var $aydesc = $('textarea[name="ay[description]"]'),
$goeshere = $('#goeshere');
$aydesc.on('keyup.preview', function(e){
$goeshere.text($(this).val());
});
$aydesc.trigger('keyup.preview');
});
我认为命名空间事件非常漂亮。
当然,你可以用非常好的方式做到这一点:
(已修复,之前无法正常工作。)
$(document).ready(function(){
var $aydesc = $('textarea[name="ay[description]"]'),
$goeshere = $('#goeshere');
var preview = function(e){
$goeshere.text($(this).val());
};
$aydesc.on('keyup', preview);
preview.call($aydesc);
});
如果您有多个textarea
,请告诉我,我会更新它以管理该案例。如果你这样做,你需要一些关于应该显示textarea
值的逻辑,除非每个textarea
都拥有它自己的显示目标。