事件 (Events)
新方法: jQuery.proxy() (jQuery.proxy() Documenation, Commit 1, Commit 2)
如果你需要保證一個函數內的”this”恒定地保持某個值, 你可以用jQuery.proxy獲得一個相同作用域的函數。 var obj = { name: "John", test: function() { alert( this.name ); $("#test").unbind("click", obj.test); } }; $("#test").click( jQuery.proxy( obj, "test" ) );
多個事件綁定 (.bind() 文檔)
你可以通過遞入一個對象來一次性綁定元素的多個事件。 $("div.test").bind({ click: function(){ $(this).addClass("active"); }, mouseenter: function(){ $(this).addClass("inside"); }, mouseleave: function(){ $(this).removeClass("inside"); } });
‘change’和’submit’事件規(guī)范化 (Change 文檔, Submit 文檔)
普通的或是即時的change和submit事件可以在各種瀏覽器上穩(wěn)定工作了。我們覆蓋了IE里的change和submit, 替換為與其他瀏覽器相同的事件。
新的事件: ‘focusin’ and ‘focusout’ (.focusin() 文檔, .focusout() 文檔, Commit)
focusin和focusout在一般情況下等同于focus和blur, 但是多了向父元素傳遞的作用。如果你自己編寫你的事件代理模式(TODO), 這個功能將對你有很大幫助。請注意對focus和blur使用live()方法將不會起作用; 在設計的時候我們根據 DOM事件規(guī)范決定不使其向父元素傳遞事件。 $("form").focusout(function(event) { var tgt = event.target; if (tgt.nodeName == "INPUT" && !tgt.value) { $(tgt).after("nothing here"); } });
所有的事件都可以成為即時事件 (.live() 文檔)
除了ready, focus (用focusin), 和 blur (用focusout)以外, 所有能用.bind()綁定的事件都可以成為即時事件。
在live()所支持的事件里,我們對能夠支持下面這幾個額外的事件感到尤其驕傲。通過.live()里的事件代理, 1.4版實現了對change, submit, focusin, focusout, mouseenter, 以及mouseleave事件的跨瀏覽器支持。
注: 如果你需要即時的focus事件,你應該用focusin和focusout, 而不要用focus和blur, 因為就像前面提到的, focus和blur不向上傳遞。
還有, live()也接受數據對象作為參數了, 同bind()方法一樣 (Commit)
live/die也支持環(huán)境變量了 (Commit)
現在可以在綁定事件的時候給選擇符指定一個環(huán)境。如果環(huán)境被指定了, 只有屬于這個環(huán)境下的元素才會被綁定事件。在創(chuàng)建即時事件的時候, 元素本身不需要已經被定義, 但是環(huán)境必須被創(chuàng)建。
確定ready事件至少含有body元素 (Commit)
jQuery現在會檢查body是不是存在,如果不存在,會對body進行輪流探詢。
在不需要手動處理內存溢出的非IE瀏覽器中, 卸載的速度提高了。 (Commit)
出處:帕蘭映像
責任編輯:moby
上一頁 jQuery 1.4官方文檔中文版 [4] 下一頁 jQuery 1.4官方文檔中文版 [6]
◎進入論壇網頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|