2012-03-11 80 views
0

我有一個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

回答

0

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

0

在文檔的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')); 
    }); 
}); 
0

如果我理解正確的話要渲染預覽每個KEYUP後,最初當頁面加載完畢。您麪包車做到這一點:

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

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

注意

的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