显示options未定义

显示options未定义

http://img1.sycdn.imooc.com//climg/5ad5ec730001af7613570593.jpg

http://img1.sycdn.imooc.com//climg/5ad5ec7300011ba710020629.jpg

老师,可以帮我看一下代码吗?之前一直是好的,在使用options添加dropdown-active和使用options添加click事件时,就显示options未定义。但是写插件时那里的options是可以打印出来的。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
小于飞飞 2018-04-18 11:12:27

你好,上传完整代码(涉及到的html、css\js 等),以便更好检测问题,加油!

提问者 慕粉1257262530 2018-04-17 20:55:13
(function ($) {
    'use strict';

    function Dropdown(elem,options){
        this.$elem = $(elem);
        this.$layer =  this.$elem.find('.dropdown-layer');
        this.activeClass =  this.$elem.data('active')+'-active';
         // this.activeClass = options.active + '-active';


        this.$layer.showHide(options); //showHide初始化
        // this.$elem.hover(this.show,this.hide);

        // var self = this;
        // this.$elem.hover(function () {
        //     self.show();
        // },function () {
        //     self.hide();
        // });

        //改变this指向
        this.$elem.hover($.proxy(this.show,this),$.proxy(this.hide,this));

        console.log(options);
        // if(options.event === 'click'){
        //     console.log(options);
        //     this.$elem.on('click',$.proxy(this.show,this));
        //     $(document).on('click',$.proxy(this.hide,this))
        // }else{
        //     this.$elem.hover($.proxy(this.show,this),$.proxy(this.hide,this))
        // }

    }


    Dropdown.DEFAULTS = {
        event:'hover',   //click
        css3:false,
        js:false,
        animation:'fade',
        active:'dropdown'
    };
    Dropdown.prototype.show = function () {
        this.$elem.addClass(this.activeClass);
        this.$layer.showHide('show');
    };
    Dropdown.prototype.hide = function () {
        this.$elem.removeClass(this.activeClass);
        this.$layer.showHide('hide');
    };
    var dropdown = new Dropdown();
    dropdown.show();
    dropdown.hide();

//     function dropdown(elem,options) {
//         var $elem = $(elem),
//             $layer = $elem.find('.dropdown-layer'),
//             activeClass = $elem.data('active')+'-active';
//
//         $layer.showHide(options); //showHide初始化
//
//
//         $elem.hover(function(){
//             $elem.addClass(activeClass);
//             $layer.showHide('show');
//         },function () {
//             $elem.removeClass(activeClass);
//             $layer.showHide('hide');
//         });
//     };
//
// //    $('.dropdown').each(function () {
// //        dropdown($(this));
// //    });
    // var defaults = {
    //     css3:false,
    //     js:false,
    //     animation:'fade'
    // };
    $.fn.extend({ //插件形式调用
        dropdown:function (option) {
            return this.each(function () {
                var options = $.extend({},Dropdown.DEFAULTS,$(this).data,option);//最后一个对象覆盖前面的对象
                new Dropdown(this,options);
            });
        }
    });

})(jQuery);


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师