


Step by step implementation process of making jquery plug-in Tabs_jquery
Tabs are the most widely used effect on web pages now. There are also many jquery plug-ins and non-jquery plug-ins. Some friends asked me how to use ajax of jquery.ui.tabs to only request the server once. I think it is actually very simple. Take a look. I know the official API, but before replying to these friends, I used firebug to check the official ui.tabs and found that the ajax cache was declared. Every time a tab is clicked, there will still be a server request. This should be the server cache, not the actual one. We only requested Ajax once and no longer requested the server. Next, I looked for other tabs plug-ins. Basically, none of them met the requirements. They were either too big or too simple. If they were too big, it would be better to use ui.tabs, documentation and The code specifications are all reliable. Therefore, it is necessary to make a simple tabs plug-in. Before designing, first sort out the ideas and implement main functions such as tabs, automatic rotation, ajax, etc., and then the dom arrangement form. Here we use the traditional
- tabs2 tabs1">Hello World!
>
The way a li corresponds to a div, when When using ajax, add a rel attribute of a, write the content into the corresponding div, and then remove the rel attribute. This will only request the server once, and the rest will be the content that the div has already written
I have not used it here. Cookie can be combined with the jquery.cookie plug-in, so that even if the user closes the web page and opens it next time, there is no need to request the server
First, first write a closure for the jquery plug-in. A friend in the garden has written javascript in the past two days. The concept of closure is very good. Friends who are interested should take a look
Second, name the plug-in, here it is named aTabs, so you can bind it Use $(...).aTabs(), my English name is Allen, so I named it with the prefix a~
}
Third, write the desired function into an API for external modification
eventName: 'all', //click,mouserover,all
loadName: 'Loading ...', //ajax wait string
fadeIn: 'normal',
autoFade: false,
autoFadeTime: 3
};
var opts = $.extend({} , $.fn.aTabs.defaults, options); //Here you can replace the default value with external input. For details on the role of $.extend, see http://api.jquery.com/jQuery.extend/, if you don’t understand English, just look at the examples
Fourth, write the main function , please see the comments in the code
return this.each(function () { //Here is each bound dom plug-in
var target = $(this);
var div = target.children().not( "ul,span"); //All tabs display body div
var tabs = target.find('ul:eq(0) li'); //All tabs header index
function Tabs( ) {
if ($(this).hasClass(opts.className)) {
return false;
}
tabsShow(div, $(this));
return false;
}
function tabsShow(div, li, index) {
div.stop(true, true).hide();
//Automatic rotation using
if (typeof (index) = = "number") {
if (li.find("a").attr("rel")) ajax(div, li);
$(div[index]).stop(true,true ).fadeIn(opts.fadeIn);
tabs.stop(true, true).removeClass(opts.className);
$(tabs[index]).stop(true, true).addClass(opts. className);
}
//Non-automatic rotation
else {
var tabBody = div.filter(li.find("a").attr("href"));
if (li.find("a").attr("rel")) ajax(div, li);
tabBody.stop(true,true).fadeIn(opts.fadeIn);
tabs.stop (true, true).removeClass(opts.className);
li.stop(true, true).addClass(opts.className);
}
}
function ajax(div, li) { //Here is the key ajax, which only requests the server once by operating rel
var href = li.find("a").attr("href");
var rel = li.find( "a").attr("rel"); //ajax request url
var i = div.filter(href); //current div
if (rel) { //if ajax request url is not Empty, only ajax once
i.html(opts.loadName);
$.ajax({
url: rel,
cache: false,
success: function (html) {
i.html(html);
},
error: function () {
i.html('Loading error, please try again! ');
}
});
li.find("a").removeAttr("rel"); //Only ajax once
}
}
if ( opts.autoFade) {
var index = opts.firstOn 1;
setInterval(function () {
if (index >= div.length) {
index = 0;
}
tabsShow(div, $(this), index );
}, opts.autoFadeTime * 1000);
}
tabs.bind(opts.eventName == 'all' ? 'click mouseover ' : opts.eventName, Tabs) //Bind event
.filter(':first').trigger(opts.eventName == 'all' ? 'click' : opts.eventName); //Automatically trigger events
});
Finally, after integrating the above, the tabs plug-in was born. Here is the full source code:
/*
* Author: Obsidian
*/
(function ($) {
$.fn. aTabs = function (options) {
$.fn.aTabs.defaults = {
firstOn: 0,
className: 'selected',
eventName: 'all', //click,mouserover, all
loadName: 'Loading...', //ajax waiting string
fadeIn: 'normal',
autoFade: false,
autoFadeTime: 3
};
var opts = $.extend({}, $.fn.aTabs.defaults, options);
return this.each(function () {
var target = $(this);
var div = target.children().not("ul,span"); //All tabs display body div
var tabs = target.find('ul:eq(0) li'); //All tabs headers Department index
function Tabs() {
if ($(this).hasClass(opts.className)) {
return false;
}
tabsShow(div, $(this)) ;
return false;
}
function tabsShow(div, li, index) {
div.stop(true, true).hide();
//Automatic rotation
if (typeof (index) == "number") {
if (li.find("a").attr("rel")) ajax(div, li);
$(div[index ]).stop(true,true).fadeIn(opts.fadeIn);
tabs.stop(true, true).removeClass(opts.className);
$(tabs[index]).stop(true , true).addClass(opts.className);
}
//Non-automatic rotation
else {
var tabBody = div.filter(li.find("a").attr(" href"));
if (li.find("a").attr("rel")) ajax(div, li);
tabBody.stop(true,true).fadeIn(opts.fadeIn );
tabs.stop(true, true).removeClass(opts.className);
li.stop(true, true).addClass(opts.className);
}
}
function ajax(div, li) {
var href = li.find("a").attr("href");
var rel = li.find("a").attr("rel "); //ajax request url
var i = div.filter(href); //current div
if (rel) { //If ajax request url is not empty, only ajax once
i .html(opts.loadName);
$.ajax({
url: rel,
cache: false,
success: function (html) {
i.html(html);
},
error: function () {
i.html('Loading error, please try again! ');
}
});
li.find("a").removeAttr("rel"); //Only ajax once
}
}
if ( opts.autoFade) {
var index = opts.firstOn 1;
setInterval(function () {
if (index >= div.length) {
index = 0;
}
tabsShow(div, $(this), index );
}, opts.autoFadeTime * 1000);
}
tabs.bind(opts.eventName == 'all' ? 'click mouseover ' : opts.eventName, Tabs) //Bind event
.filter(':first').trigger(opts.eventName == 'all' ? 'click' : opts.eventName); //Automatically trigger events
});
};
})(jQuery);

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Linux new version
SublimeText3 Linux latest version

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

WebStorm Mac version
Useful JavaScript development tools