jquery插件方法$.fn/$.extend

首先介绍$.fn:
写一个简单更改css样式插件

 $.fn.highlight = function() {
    this.css("backgroundColor", "#ffced")
    .css("color", "#d85030");
    return this;//为了支持链式操作
}
//函数内部的this在调用时被绑定为jQuery对象,所有函数内部代码可以正常调用所有jQuery对象的方法;

highilght()就是一个简单的插件,a.highlinght()即可调用;

用户可以自己设置样式插件,添加一个参数;

  $.fn.highlight = function(option) {
//默认样式
  var bgColor = option && option.backgroundColor || "red";
var color = option && option.color || "gary;
this.css("backgroundColor", bgColor).css("color", color);
return this;
}

可以直接使用highliht()调用,也可以为highliht({backgroungdColor: "#2223dd",color: "#FFFFFF"});

$.extend方法
$.extend(boolean target [obj1],[obj2]...)方法是把多个object对象的属性合并到target目标对象中,遇到同名属性,总是使用靠后的对象值。默认第一个参数是false,如果为true,即深度合并,也会把对象中对象也加合并;

$.fn.highlight = function(options) { 
 //把默认值和用户设置的值合并;
var opts = $.extend({}, $.fn.highlight.deaults, options);
this.css("backgrouandColor", opts.backgroundColor).css("color", opts.color);
return this;
}
//设置默认值
$.fn.highlight.defaults = function() {
  color: "#dd8043",
  backgroundColor: "#fff8de"
};
//修改默认值,
$.fn.highlight.defaults.backgroundColor = "red";
$.fn.highlight.defaults.color = "green";
#("p").highlight()//使用的是默认值
#("p").highlight({color: ""yellow})//使用的是用户设置的值

再来看一个完整的超链接跳转提示的插件例子吧;

<p>超链接跳转提示插件</p>
<a href="http://www.baidu.com" target="_blank" id="info">百度</a>
//js
$.fn.external = function() {
    //return结果,用来支持链式
    return this.filter("a").each(function() {
//filter() 匹配选中的元素,each()遍历每个匹配的元素
  //each()内部的回调函数的this绑定为dom自身;
    var a = $(this);
    var url = a.attr("href");
if (url && (url.indexOf("http://") === 0 || url.indexOf("https://") === 0)) {//判断url是否存在
      a.attr("href", "#0”)//更改url
      .removeAttr("target")
      .append("<i class='uk-icon-external-link'></i>")
//bootstrap样式
      .click(function () {
      if (confirm("确切前往" + url + "?")) {
        window.open(url)
         }
       })
     }
  });
};
$("a").external();

一个较为完整的jQuery插件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 第1章 jQuery实现Ajax应用 1-1 使用load()方法异步请求数据 使用load()方法通过Ajax请...
    mo默22阅读 1,685评论 1 9
  • extend篇 extend理解不够深入,需要更深入研究。 (function($){ // 类插件,用法:$.p...
    一捆稻草阅读 288评论 1 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,321评论 0 2
  • 美好的一天从感恩开始:我感恩生命的富足美好!我感恩健康!我感恩天气!我感恩父母赐予我生命!我感恩老公辛劳打拼!我感...
    淘淘的简书阅读 170评论 0 1
  • 网恋啊,聊到最后都是陌生人。 真正的爱情从来不拘泥于形式和距离,只在于你是否足够爱对方。 这句话,林好好一直奉为真...
    深夜毒鸡汤阅读 401评论 0 1