Optimize index.js and add style consistency

Declared all jQuery objects once where needed instead of diving into the DOM multiple times for the same object.

Added style consistency between variable declarations, if/else statements and functions.
This commit is contained in:
Jilles Soeters 2014-09-07 22:21:06 +02:00
parent e669b29895
commit 2cf5c0cb87

View File

@ -2,23 +2,51 @@
* Main JS file for Casper behaviours * Main JS file for Casper behaviours
*/ */
/*globals jQuery, document */ /* globals jQuery, document */
(function ($) { (function ($, sr, undefined) {
"use strict"; "use strict";
$(document).ready(function(){ var $document = $(document),
$(".post-content").fitVids(); // debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
debounce = function (func, threshold, execAsap) {
var timeout;
function casperFullImg() { return function debounced () {
$("img").each( function() { var obj = this, args = arguments;
var contentWidth = $(".post-content").outerWidth(); // Width of the content function delayed () {
var imageWidth = $(this)[0].naturalWidth; // Original image resolution if (!execAsap) {
func.apply(obj, args);
}
timeout = null;
}
if (timeout) {
clearTimeout(timeout);
} else if (execAsap) {
func.apply(obj, args);
}
timeout = setTimeout(delayed, threshold || 100);
};
};
$document.ready(function () {
var $postContent = $(".post-content");
$postContent.fitVids();
var casperFullImg = function () {
$("img").each(function () {
var $this = $(this),
contentWidth = $postContent.outerWidth(), // Width of the content
imageWidth = $this[0].naturalWidth; // Original image resolution
if (imageWidth >= contentWidth) { if (imageWidth >= contentWidth) {
$(this).addClass('full-img'); $this.addClass('full-img');
} else { } else {
$(this).removeClass('full-img'); $this.removeClass('full-img');
} }
}); });
}; };
@ -30,61 +58,38 @@
}); });
}(jQuery)); // smartresize
jQuery.fn[sr] = function(fn) { return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
(function($,sr){ // Arctic Scroll by Paul Adam Davis
// https://github.com/PaulAdamDavis/Arctic-Scroll
// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}
// smartresize
jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
})(jQuery,'smartresize');
// Arctic Scroll by Paul Adam Davis
// https://github.com/PaulAdamDavis/Arctic-Scroll
(function ($) {
$.fn.arctic_scroll = function (options) { $.fn.arctic_scroll = function (options) {
var defaults = { var defaults = {
elem: $(this), elem: $(this),
speed: 500 speed: 500
}; },
var options = $.extend(defaults, options);
options.elem.click(function(event){ allOptions = $.extend(defaults, options);
allOptions.elem.click(function (event) {
event.preventDefault(); event.preventDefault();
var offset = ($(this).attr('data-offset')) ? $(this).attr('data-offset') : false, var $this = $(this),
position = ($(this).attr('data-position')) ? $(this).attr('data-position') : false; $htmlBody = $('html, body'),
offset = ($this.attr('data-offset')) ? $this.attr('data-offset') : false,
position = ($this.attr('data-position')) ? $this.attr('data-position') : false,
toMove;
if (offset) { if (offset) {
var toMove = parseInt(offset); toMove = parseInt(offset);
$('html,body').stop(true, false).animate({scrollTop: ($(this.hash).offset().top + toMove) }, options.speed); $htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top + toMove) }, allOptions.speed);
} else if (position) { } else if (position) {
var toMove = parseInt(position); toMove = parseInt(position);
$('html,body').stop(true, false).animate({scrollTop: toMove }, options.speed); $htmlBody.stop(true, false).animate({scrollTop: toMove }, allOptions.speed);
} else { } else {
$('html,body').stop(true, false).animate({scrollTop: ($(this.hash).offset().top) }, options.speed); $htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top) }, allOptions.speed);
} }
}); });
}; };
})(jQuery); })(jQuery, 'smartresize');