Jquery plugin development

40
jQuery plugin development phpXperts seminar 2010 DHAKA.

description

This is a step by step tutorial for jQuery plugin development. This tutorial will help any guys to develop jQuery plugin, with good knowledge in code jQuery.

Transcript of Jquery plugin development

Page 1: Jquery plugin development

jQuery plugin developmentphpXperts seminar – 2010

DHAKA.

Page 2: Jquery plugin development

Ziaul Haq ZiaSr. Web Application Developer.

Liveoutsource Ltd.

www.jquerygeeek.com

twitter.com/jquerygeek

facebook.com/jquerygeek

About me

Page 3: Jquery plugin development

What is jQuery plugin ?

jQuery method.

Run as jQuery core method.

Easy to re-use

Page 4: Jquery plugin development

Let’s see some jQuery plugins ……

Page 6: Jquery plugin development

Some plugins

Photo gallery

http://leandrovieira.com/projects/jquery/lightbox/

Page 8: Jquery plugin development

Some plugins

Tool tip (qTip)

http://craigsworks.com/projects/qtip/

Page 9: Jquery plugin development

Some plugins

UI Tab

http://jqueryui.com/demos/tabs/

Page 10: Jquery plugin development

Plugins Directory

Thousands of plugins are ready, look here…

http://plugins.jquery.com/

Page 11: Jquery plugin development

jgTab

Similar to ‘UI Tab’, right ???

Page 12: Jquery plugin development

jgTab

But, at this time we are going to develop this together.

Page 13: Jquery plugin development

Let’s enjoy…!!

This is pretty simple.

Page 14: Jquery plugin development

HTML Body

<div id="wrapper">

<div id="tabs">

<ul>

<li>Tab One</li>

<li>Tab Two</li>

<li>Tab Three</li>

</ul>

<div>I am first tab’s content,....</div>

<div>I am tab two's content ....</div>

<div>I am the final content.....</div>

</div>

</div>

Page 15: Jquery plugin development

Let’s start together …

Let’s set the plugin name as : jgTab

Page 16: Jquery plugin development

Start with new method

Add new method to jQuery.fn (prototype)

jQuery.fn.jgTab = function() {

// Here will be our plugin’s stuffs

};

Page 17: Jquery plugin development

Execute the method

Wrap it up with a self executing closure.

(function(){

jQuery.fn.jgTab = function() {

// Here will be our plugin’s stuffs

};

})()

Page 18: Jquery plugin development

Protect our plugin

Passing jQuery object to avoid conflict

(function($){

$.fn.jgTab = function() {

// Here will be our plugin’s stuffs

};

})(jQuery)

Page 19: Jquery plugin development

(function($){

$.fn.jgTab = function() {

return this.each(function() {

// Code to work on each item

});

};

})(jQuery)

Iterate the objects

Returns jQuery object for each element

Page 20: Jquery plugin development

Let’s have a look at our template

(function($){

$.fn.jgTab = function() {

return this.each(function() {

// Code to work on each item

});

};

})(jQuery);

Page 21: Jquery plugin development

Our Plugin’s core code

// Collect selector’s object

var masterObj = $(this);

// Collect tab element’s object

var subObj = $('ul li', masterObj);

// Collect content element’s object

var contentObj = $('div', masterObj);

Page 22: Jquery plugin development

Our Plugin’s core code

var masterObj = $(this);

var subObj = $('ul li', masterObj);

var contentObj = $('div', masterObj);

// Hide All the content elements

contentObj.hide();

Page 23: Jquery plugin development

Our Plugin’s core code

var masterObj = $(this);

var subObj = $('ul li', masterObj);

var contentObj = $('div', masterObj);

contentObj.hide();

// Setting initial tab position

var intSelected = 0;

// Show initial tab’s content

contentObj.eq(intSelected).show();

// Applying ‘selected’ class for initial tab

subObj.eq(intSelected).addClass('selected');

Page 24: Jquery plugin development

Our Plugin’s core code

var masterObj = $(this);

var subObj = $('ul li', masterObj);

var contentObj = $('div', masterObj);

contentObj.hide();

var intSelected = 0;

contentObj.eq(intSelected).show();

subObj.eq(intSelected).addClass('selected');

// Clicking on a tab will trigger this action

subObj.click( function(){

// Related codes go here

});

Page 25: Jquery plugin development

Our Plugin’s core code

subObj.click( function(){

// Hide all content elements and remove

‘selected’ class

contentObj.hide();

subObj.removeClass('selected');

});

Page 26: Jquery plugin development

Our Plugin’s core code

subObj.click( function(){

contentObj.hide();

subObj.removeClass('selected');

// Collecting the position of clicked tab

var currentTab = subObj.index($(this));

// Opening related content and applying

'selected' class.

contentObj.eq(currentTab).show();

$(this).addClass('selected');

});

Page 27: Jquery plugin development

Plugin is ready to use

Now we will put plugin’s core code to our plugin template.

And saving it as jquery.jgTab.js

It’s ready to run.

Let’s enjoy

Page 28: Jquery plugin development

HTML Body Part

<div id="wrapper">

<div id="tabs">

<ul>

<li>Tab One</li>

<li>Tab Two</li>

<li>Tab Three</li>

</ul>

<div>I am first tab’s content....</div>

<div>I am tab two's content.....</div>

<div>I am the final content.....</div>

</div>

</div>

Page 29: Jquery plugin development

jgTabStyle.css

#wrapper{

padding: 5px;

border: 1px solid #999999;

width: 400px;

}

#tabs{

background-color:#CCCCCC;

padding: 15px;

}

#tabs div{

margin-top: 4px;

padding:5px;

border: 1px solid #666666;

display:none;

background:#FFFFFF;

}

#tabs ul{

margin: 0px;

padding: 0px;

list-style:none;

}

#tabs ul li{

padding: 4px 8px;

list-style:none;

display:inline;

margin: 2px;

border: 1px solid #666666;

font-weight:bold;

background:#666666;

cursor:pointer;

color:#FFFFFF;

}

#tabs ul li.selected{

background:#FFFFFF;

cursor:pointer;

color: #000000;

border-bottom: 1px solid #FFFFFF;

}

Page 30: Jquery plugin development

Header Part

<script language="javascript" type="text/javascript"

src="js/jquery.js"></script>

<script language="javascript" type="text/javascript"

src="js/jquery.jgTab.js"></script>

<script language="javascript" type="text/javascript">

$(document).ready( function(){

$('#tabs').jgTab();

});

</script>

<link href="css/jgTabStyle.css" rel="stylesheet"

type="text/css" />

Page 31: Jquery plugin development

And here is the output

Page 32: Jquery plugin development

Extend the options(function($){

$.fn.jgTab = function(options) {

var defaults = {

selected : 1

};

if(options) {

var options = $.extend( defaults, options

);

}

return this.each(function() {

// Code to run for each items

});

};

})(jQuery);

Page 33: Jquery plugin development

Why jQuery plugin ?

Re-use easily

Organize you complex code

Use jQuery core methods by extending

Namespace your javascript

Contribute to open source

Page 34: Jquery plugin development

How jQuery plugin works ?

jQuery has extendable architecture

Allows you to write methods that operate on jQuery objects

Allows you to extend entire methods

Page 35: Jquery plugin development

Resource for core jQuery

http://www.visualjquery.com

Visual jQuery

Page 36: Jquery plugin development

Resource for plugin development

http://docs.jquery.com/Plugins/Authoring

On jQuery docs

Few more on here

http://www.webresourcesdepot.com/jquery-plugin-development-10-tutorials-to-get-started/

Page 38: Jquery plugin development

Question ?

Please......

Page 39: Jquery plugin development

If anymore question or help needed,please mail me :

[email protected]

OrContact me on :

www.jquerygeek.com

Page 40: Jquery plugin development

Thank You