谁能把这段代码注释一下

ziluopao 发布于 2016/05/20 11:29
阅读 250
收藏 0
(function($) {
    $.fn.microshop_like = function(options) {
        var settings = $.extend({}, { type:null,count_target:'' }, options);
        if( settings.type == null ) return false;
        return this.each(function() {
            $(this).parent().parent().append("<div class='like_tooltips' style='display:none;'></div>");
            $(this).click(submit_like);
        });
        function submit_like() {
            var item = $(this);
            $.getJSON("index.php?act=like&op=like_save", { type: settings.type, like_id: item.attr("like_id") }, function(json){
                if(json.result == "true") {
                    if(settings.count_target == '') {
                        item.find("em").microshop_count({type:"+"});
                    } else {
                        settings.count_target.microshop_count({type:"+"});
                    }
                }
                $(".like_tooltips").hide();
                var tooltips = item.parent().parent().find(".like_tooltips");
                tooltips.html(json.message).show();
                setTimeout(function(){tooltips.hide()},2000);
            });
        }
    }
})(jQuery);



    有点似懂非懂,最终还是没有完全理解,有点逻辑混乱,哪位高人能注释一下
加载中
0
曾建凯
曾建凯

引用来自“李永china”的评论

(function($) {
//定义一个成员函数
    $.fn.microshop_like = function(options) {
    //将options与{ type:null,count_target:'' }合并,并返回
        var settings = $.extend({}, { type:null,count_target:'' }, options);
        if( settings.type == null ) return false;
        //循环选取的标签
        return this.each(function() {
            //找到该标签元素的爷爷,然后添加<div class='like_tooltips' style='display:none;'></div>
            $(this).parent().parent().append("<div class='like_tooltips' style='display:none;'></div>");
            //给该标签添加click时间,当点击的就触发submit_like方法
            $(this).click(submit_like);
        });
        function submit_like() {
            var item = $(this);
            //从后台获取数据,并把数据格式化成json对象,并把值传给回调函数
            $.getJSON("index.php?act=like&op=like_save", { type: settings.type, like_id: item.attr("like_id") }, function(json){
            //以下代码属于你们业务逻辑
            //查找json对象的result属性是否为true
                if(json.result == "true") {
                //查看settings对象的count_target是否为''
                    if(settings.count_target == '') {
                    //找到该元素的子标签的em标签并且执行microshor_count方法
                        item.find("em").microshop_count({type:"+"});
                    } else {
                        找到settings对象的count_target的子标签的em标签并且执行microshor_count方法
                        settings.count_target.microshop_count({type:"+"});
                    }
                }
                //隐藏
                $(".like_tooltips").hide();
                var tooltips = item.parent().parent().find(".like_tooltips");
                tooltips.html(json.message).show();
                setTimeout(function(){tooltips.hide()},2000);
            });
        }
    }

})(jQuery);

我也刚学jq 错误的地方请见谅

引用来自“ziluopao”的评论

我不理解这是啥意思$.extend({}, { type:null,count_target:'' }, options);

$.extend函数,就是Object对象属性扩展、覆盖的意思。

比如$.extend({a:'a', b:'b'}, {a: 1}),返回结果是{a: 1, b: 'b'}。但是注意,第一个参数,会被合并后覆盖,也即第一个参数的对象实际上也变成了{a: 1, b: 'b'}

这里的意思是:$.extend({}, { type:null,count_target:'' }, options)

首先第一个参数,传入一个新建的Object {},然后第二个参数这个Object的默认参数,之后再将options传过来的内容覆盖过去。严格来说,应该这样写:

$.extend({}, { type:null,count_target:'' }, options || {})

1
李永china
李永china
(function($) {
//定义一个成员函数
    $.fn.microshop_like = function(options) {
    //将options与{ type:null,count_target:'' }合并,并返回
        var settings = $.extend({}, { type:null,count_target:'' }, options);
        if( settings.type == null ) return false;
        //循环选取的标签
        return this.each(function() {
            //找到该标签元素的爷爷,然后添加<div class='like_tooltips' style='display:none;'></div>
            $(this).parent().parent().append("<div class='like_tooltips' style='display:none;'></div>");
            //给该标签添加click时间,当点击的就触发submit_like方法
            $(this).click(submit_like);
        });
        function submit_like() {
            var item = $(this);
            //从后台获取数据,并把数据格式化成json对象,并把值传给回调函数
            $.getJSON("index.php?act=like&op=like_save", { type: settings.type, like_id: item.attr("like_id") }, function(json){
            //以下代码属于你们业务逻辑
            //查找json对象的result属性是否为true
                if(json.result == "true") {
                //查看settings对象的count_target是否为''
                    if(settings.count_target == '') {
                    //找到该元素的子标签的em标签并且执行microshor_count方法
                        item.find("em").microshop_count({type:"+"});
                    } else {
                        找到settings对象的count_target的子标签的em标签并且执行microshor_count方法
                        settings.count_target.microshop_count({type:"+"});
                    }
                }
                //隐藏
                $(".like_tooltips").hide();
                var tooltips = item.parent().parent().find(".like_tooltips");
                tooltips.html(json.message).show();
                setTimeout(function(){tooltips.hide()},2000);
            });
        }
    }

})(jQuery);

我也刚学jq 错误的地方请见谅

0
阿信sxq
阿信sxq
应该是写了一个jquery插件吧,具体的仔细看看
0
ziluopao
ziluopao

引用来自“李永china”的评论

(function($) {
//定义一个成员函数
    $.fn.microshop_like = function(options) {
    //将options与{ type:null,count_target:'' }合并,并返回
        var settings = $.extend({}, { type:null,count_target:'' }, options);
        if( settings.type == null ) return false;
        //循环选取的标签
        return this.each(function() {
            //找到该标签元素的爷爷,然后添加<div class='like_tooltips' style='display:none;'></div>
            $(this).parent().parent().append("<div class='like_tooltips' style='display:none;'></div>");
            //给该标签添加click时间,当点击的就触发submit_like方法
            $(this).click(submit_like);
        });
        function submit_like() {
            var item = $(this);
            //从后台获取数据,并把数据格式化成json对象,并把值传给回调函数
            $.getJSON("index.php?act=like&op=like_save", { type: settings.type, like_id: item.attr("like_id") }, function(json){
            //以下代码属于你们业务逻辑
            //查找json对象的result属性是否为true
                if(json.result == "true") {
                //查看settings对象的count_target是否为''
                    if(settings.count_target == '') {
                    //找到该元素的子标签的em标签并且执行microshor_count方法
                        item.find("em").microshop_count({type:"+"});
                    } else {
                        找到settings对象的count_target的子标签的em标签并且执行microshor_count方法
                        settings.count_target.microshop_count({type:"+"});
                    }
                }
                //隐藏
                $(".like_tooltips").hide();
                var tooltips = item.parent().parent().find(".like_tooltips");
                tooltips.html(json.message).show();
                setTimeout(function(){tooltips.hide()},2000);
            });
        }
    }

})(jQuery);

我也刚学jq 错误的地方请见谅

我不理解这是啥意思$.extend({}, { type:null,count_target:'' }, options);
0
ziluopao
ziluopao

引用来自“曾建凯”的评论

引用来自“李永china”的评论

(function($) {
//定义一个成员函数
    $.fn.microshop_like = function(options) {
    //将options与{ type:null,count_target:'' }合并,并返回
        var settings = $.extend({}, { type:null,count_target:'' }, options);
        if( settings.type == null ) return false;
        //循环选取的标签
        return this.each(function() {
            //找到该标签元素的爷爷,然后添加<div class='like_tooltips' style='display:none;'></div>
            $(this).parent().parent().append("<div class='like_tooltips' style='display:none;'></div>");
            //给该标签添加click时间,当点击的就触发submit_like方法
            $(this).click(submit_like);
        });
        function submit_like() {
            var item = $(this);
            //从后台获取数据,并把数据格式化成json对象,并把值传给回调函数
            $.getJSON("index.php?act=like&op=like_save", { type: settings.type, like_id: item.attr("like_id") }, function(json){
            //以下代码属于你们业务逻辑
            //查找json对象的result属性是否为true
                if(json.result == "true") {
                //查看settings对象的count_target是否为''
                    if(settings.count_target == '') {
                    //找到该元素的子标签的em标签并且执行microshor_count方法
                        item.find("em").microshop_count({type:"+"});
                    } else {
                        找到settings对象的count_target的子标签的em标签并且执行microshor_count方法
                        settings.count_target.microshop_count({type:"+"});
                    }
                }
                //隐藏
                $(".like_tooltips").hide();
                var tooltips = item.parent().parent().find(".like_tooltips");
                tooltips.html(json.message).show();
                setTimeout(function(){tooltips.hide()},2000);
            });
        }
    }

})(jQuery);

我也刚学jq 错误的地方请见谅

引用来自“ziluopao”的评论

我不理解这是啥意思$.extend({}, { type:null,count_target:'' }, options);

$.extend函数,就是Object对象属性扩展、覆盖的意思。

比如$.extend({a:'a', b:'b'}, {a: 1}),返回结果是{a: 1, b: 'b'}。但是注意,第一个参数,会被合并后覆盖,也即第一个参数的对象实际上也变成了{a: 1, b: 'b'}

这里的意思是:$.extend({}, { type:null,count_target:'' }, options)

首先第一个参数,传入一个新建的Object {},然后第二个参数这个Object的默认参数,之后再将options传过来的内容覆盖过去。严格来说,应该这样写:

$.extend({}, { type:null,count_target:'' }, options || {})

那么在实际应用中,比如下面代进其中的参数

$(document).ready(function(){
    $("[nc_type=microshop_like]").microshop_like({type:'store'});
});    



中的type:'store'指的是什么呢,是class吗,还是id

李永china
李永china
被单引号括起来了 感觉是字符串
返回顶部
顶部