But I do miss a bit of Object Orientation in most of them.
I decided to take a bit of each, and create my own approach.
I won’t explain it much, it should be understandable with the comments in code:
(function($){/**
** Seperate object. So each element applied with this plugin has an object structure
**/function PluginObject(container,options){//I like to keep a reference to the object I'm working onvar holder = container;//Store 'this' as an instance variable. This comes in handy when you want to speak to it as a reference in clickhandlers etc.var _self =this;this.init=function(){//initialize UI and data here}this.test=function(){//This function serves as a demo method that can be called from outside}this.render=function(){// Do complicated rendering here// Trigger the onRender that could be set through the optionsthis.trigger('onRender');}this.init();}
$.fn.myplugin=function(action,options){/**
** 'action' can be an argument for a function to call
** If no action is defined, and we just start with the options, initialize is called
**/if(typeof(action)=='object'){
options = action;
action ='initialize';}elseif(action == undefined){
action ='initialize';}if(options == undefined){
options ={};}/**
** Set, or update the options
**/function setOptions(el){// If any of the options is a function, bind that as an event// this can be something like: 'onRender'
$.each(options,function(event, fn){if(typeof(fn)=='function'){//Unbind the event if it was already bound
el.unbind(event);//Bind the event with the given function
el.bind(event, fn);}});//Extend the options with the defaults, and the options already saved in the object
options = $.extend({}, defaults, el.data('shelf.options'), options);// Save the options in the object's data
el.data('shelf.options', options);};// Default optionsvar defaults ={
width:'900px',
title:'Cool Stuff'};/**
** This is called everytime we do $(..).myplugin(..)
**/returnthis.each(function(el){
el = $(this);
setOptions(el);if(action =='initialize'|| el.data('shelf')== undefined){// Initialize the object, save it in itself
el.data('shelf',new PluginObject(el, options));}// if called like $(..).myplugin('test'), this is calledif(action =='test')
el.data('shelf').test();// This will call render(), render will also trigger 'onRender'if(action =='render')
el.data('shelf').render();});};})(jQuery);
Do you develop plugins differently? Or got a good link? I would love to hear about it!
Getting the values of radio buttons in Javascript can be a bit of a pain in the behind at times.
You’ll have to assign a different ID to each radiobutton, loop over them to see which one is checked, and return that value.
Too much hassle.
However, jQuery selectors to the rescue!
Suppose you have the following radio buttons:
Strong note: These aren’t actually buttons, they can’t really be used as form-submit buttons as they can only respond to Javascript onClick events! My newer post on the real buttons does do this! Tested in FF 3.6, Chrome 5, IE8
After successfully completing my SCJP certification (score of 81% thank you very much), it’s time to start my SCJD certification.
This certificate is achieved in two parts:
An assignment which requires you to develop an application
An essay you must write to prove you were the one who developed the application and not your supersmart neighbour
I recieved my assignment this week and was surprised to find how little descriptive it was. I was expecting at least 5 use-cases, a GUI design, 3 domain classes that are interlinked and connection to an Oracle database or something.
What I received however was a 6 page HTML file that describes about what it should do, an interface you must implement and a .db file with serialized data.
Today I dove into reading that file extensively. The only thing I can say is: there isn’t one word too much or too little on that page.
I spent about an hour reading, underlining and taking notes and I recommend you to do the same if you’re going to take your SCJD.
Also, I found this great class written by Roberto Perillo that will surely help you along if you’re having trouble figuring out your database structure.
Development Notes
These are the notes I took on my first read.
I will most likely append to these notes as I develop the application along the way as this will server as my checklist for development.
Structure
The application consists of 3 parts as I see it:
Client application
Server application
Database layer
The data is always retrieved from the database layer. However, the client application can either read and write directly to the database file, or do this via a server application
The server application must be able to allow multiple connections (hello multithreading).