【问题标题】:How to get to "extended" prototype properties or function in JavaScript? Common practice in jQuery pliugins如何在 JavaScript 中获取“扩展”原型属性或函数? jQuery插件中的常见做法
【发布时间】:2025-12-12 03:05:01
【问题描述】:

我是 JavaScript 中 OOP 的初学者。我尝试了几件事,但很明显我不懂代码。 这是我的问题: 我有一个显示日历的插件 - glDataPicker。它在输入标签上初始化,如下所示:

$('#my_input_id').glDatePicker();//parameters may be passed

  1. 所以我假设在将脚本部署到我的站点后glDatePicker.min.js DOM 中的输入得到了新方法 glDatePicker?我在吗?

然后它定义了hideshow 方法:

// Public methods
    glDatePicker.prototype =
    {
        show: function() {
            // Hide others and show this calendar
            $.each($('.gldp-el').not(this.el), function(i, o) {
                if(o.length) { o.options.onHide(o.calendar) ; }
            });

            // Show this calendar
            this.options.onShow(this.calendar);
        },

        hide: function() {
            if(this.options && !this.options.showAlways) {
                this.options.onHide(this.calendar);
            }
        },

所以我的问题是如何从插件代码之外调用方法“隐藏”? 我试过了:

$('#my_input_id').glDatePicker().calendar.hide() -> 无法读取 undefined(…) 的属性“隐藏”

等等,但我无法隐藏日历。我怎样才能从全局上下文中得到这个方法?

【问题讨论】:

  • 有一个选项叫'showAlways',设置为false
  • 它已经设置为 false,我需要在某些事件上从主脚本调用 hide,但无论如何谢谢

标签: javascript oop object jquery-plugins properties


【解决方案1】:

试试这个:

$('[gldp-el='+ $('#my_input_id').attr('gldp-id') +']').hide()

$('[gldp-el='+ $('#my_input_id').attr('gldp-id') +']').show()

【讨论】:

    【解决方案2】:

    好的,我找到了,我需要什么:

    // Doing it in a single pass
    var myDatePicker = $('#example1').glDatePicker(
    {
       showAlways: true,
       selectableDOW: [0, 2, 3]
    }).glDatePicker(true);
    
    // Or you can do it with multiple calls
    $('example1').glDatePicker(
    {
        showAlways: true,
        selectableDOW: [0, 2, 3]
    });
    
    var myDatePicker = $('example1').glDatePicker(true);
    

    现在我可以了:

    myDatePicker.hide();
    

    这样第一个glDatePicker 就不会返回对象。

    【讨论】:

      最近更新 更多