JS performance: speeding up initialization by consolidating event handlers for reply buttons

Saved about 60ms on my test system during page setup by using a single global 'live' click handler for reply links.
No longer need to seek out and attach event handlers on every notice, yay!
This commit is contained in:
Brion Vibber 2011-03-11 15:03:15 -08:00
parent 4e2a0e2fd0
commit 10e5cb482e
1 changed files with 9 additions and 22 deletions

View File

@ -423,7 +423,6 @@ var SN = { // StatusNet
.css({display:'none'})
.fadeIn(2500);
SN.U.NoticeWithAttachment($('#'+notice.id));
SN.U.NoticeReplyTo($('#'+notice.id));
SN.U.switchInputFormTab("placeholder");
}
} else {
@ -516,34 +515,22 @@ var SN = { // StatusNet
* @access private
*/
NoticeReply: function() {
if ($('#content .notice_reply').length > 0) {
$('#content .notice').each(function() { SN.U.NoticeReplyTo($(this)); });
}
},
/**
* Setup function -- DOES NOT trigger actions immediately.
*
* Sets up event handlers on the given notice's reply button to
* tweak the new-notice form with needed variables and focus it
* when pushed.
*
* (This replaces the default reply button behavior to submit
* directly to a form which comes back with a specialized page
* with the form data prefilled.)
*
* @param {jQuery} notice: jQuery object containing one or more notices
* @access private
*/
NoticeReplyTo: function(notice) {
notice.find('.notice_reply').live('click', function(e) {
$('#content .notice_reply').live('click', function(e) {
e.preventDefault();
var notice = $(this).closest('li.notice');
var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
SN.U.NoticeInlineReplyTrigger(notice, '@' + nickname.text());
return false;
});
},
/**
* Stub -- kept for compat with plugins for now.
* @access private
*/
NoticeReplyTo: function(notice) {
},
/**
* Open up a notice's inline reply box.
*