“onload”事件的名称是什么?

问题描述:

我有一个textarea,它有keyup事件来显示渲染输入的预览。但是,我想在元素加载后立即显示相同的预览。“onload”事件的名称是什么?

$('textarea[name="ay[description]"]').on('keyup', function(e){ 

最简单的话题是在声明结尾发起.trigger('keyup')。但是,不存在如下的事件,例如load,onloadready,我错过了不同的名称?

+0

可以使用文档上的ready事件。只需重构显示代码,以便您可以在Keyup处理程序中和文档准备就绪时调用它们。 – tvanfosson 2012-03-11 20:48:35

+0

这里很难理解这里提出的问题。 – gdoron 2012-03-11 20:49:00

onLoad事件被称为“加载”,但它仅针对特定对象/元素(iframe,窗口,文档)触发。

加载事件发送到一个元素,当它和所有的子元素 已完全加载。此事件可以发送到与URL相关联的任何元素 :图像,脚本,框架,iframe和窗口对象。

http://api.jquery.com/load-event/

+0

因此,我的问题是,如果有一种方法来触发'textarea'的相同事件? – Gajus 2012-03-11 20:50:23

+0

没有。该事件将永远不会为textarea工作。根据上面的报价,这个事件*可以被发送到... - 它不能被发送到其他元素。 – 2012-03-11 20:51:49

+0

那么,这将是一个很好的功能(致jQuery开发团队)。 – Gajus 2012-03-11 20:54:06

在文档的ready事件都可以使用。只需重构显示代码,以便您可以在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')); 
    }); 
}); 

如果我理解正确的话要渲染预览每个KEYUP后,最初当页面加载完毕。您面包车做到这一点:

$(document).ready(render); 
$('textarea[name="ay[description]"]') 
.on('keyup', render); 

var render = function() { 
    // DO render stuff 
} 

注意

的OP指出,除非另有说明,一个命名空间中的事件并不总是必要的。非常真实:

​​

http://jsfiddle.net/r8Qvz/4/

我并不建议你总是需要命名空间的事件做做到这一点,所以我的答案更新。

我认为,如果你有一个元素上多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'); 
}); 

http://jsfiddle.net/r8Qvz/3

命名空间的事件是非常漂亮,我想。

当然,你可以做到这一点的非巧妙的方法:

(该问题已解决,这是以前没有工作。)

$(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); 
}); 

http://jsfiddle.net/r8Qvz/5/

如果你有多个textarea s,让我知道,我会更新它来管理这种情况。如果这样做,则需要一些逻辑来确定应该显示哪个textarea值,除非每个textarea都有它自己的显示目标。

+0

您可以立即将'.trigger'事件附加到'keyup'事件的声明。此外,您使用的变量的命名约定与javascript无关,特别是'$'前缀。 – Gajus 2012-03-11 20:59:50

+0

嗯...嗯,那当然是真的,除了我指出的是,你可以给一个特定的事件处理程序的名称;谁知道你是否有其他人,只想专门解雇那一个。我想如果你发现有用的话(比如你说的''.trigger('keyup')'会在很多情况下工作),它会有所不同,但是我的示范工作(请告诉别人)。另外,我使用'$'来表示jQuery对象的变量。我不会把它称为“外星人”,无论如何,这是无关紧要的,但我已经看到它被我尊重的其他人完成,这是我从中获得的。 – 2012-03-11 21:05:24