【问题标题】:Get element of chaining in jquery to use in $.fn.{FunctionName}获取 jquery 中的链接元素以在 $.fn.{FunctionName} 中使用
【发布时间】:2019-12-14 12:37:41
【问题描述】:

我正在创建一个基于 Jquery 和 Bootrap(最新版本)的插件,由该方法/代码调用:

$(document).find('.calendar-plug-bs').each(function(index, el) {
    //$(this).plgCalendar("destroy"); Testing for destroy if exist...
    $(this).plgCalendar();
})

它与这样的元素一起使用:

<div class="form-group row">
    <div class="calendar-plug-bs"></div>
</div>

并且这个脚本/插件开始如下......

(function($) {
    $.fn.plgCalendar = function(param) {
        return window.plgCalendar(param);
    };
}(jQuery));

但问题是我需要调用初始函数的检索节点...

|------|
$(this).plgCalendar();

在其中添加一个表格...

function plgCalendar(param = null) {
    var r = null;
    if (param !== null) {
        if (typeof param.func !== 'undefined') {
            if (param.func === "destroy") {

            } else if (param.func === "getValue") {

            }
        } else {
            console.log('%cMSG: (func) not Set', 'color: #bada55');
        }
    } else {
        /*****WORKING ON THIS***/
        var target = $(this);
        console.log(target);
        if (target.is("div")) {
            var id = window.BuildRandID();
            var $tableObject = $('<table/>', {
                'class': 'bigger',
                'id': id
            });
            $(target).append($tableObject);
            return id;
        } else {
            window.alert("calendar-plug-bs must be a div");
        }
        /*****WORKING ON THIS***/
    }
    return r;
}

失败是 var taget 不是一个 div...我不知道如何检索...

【问题讨论】:

  • 您是否尝试将您的函数直接放入您的插件中,例如:$.fn.plgCalendar = function(param) { function plgCalendar(param) { ... }; };
  • 不,我喜欢设置它,因为任何人都需要访问 JQuery 对象。

标签: javascript jquery plugins jquery-plugins


【解决方案1】:

这样解决:

(function($) {
    $.fn.plgCalendar = function(param = null) {
        param = window.plgCalendarParam(param);
        param['this'] = $(this);
        return window.plgCalendar(param);
    };
}(jQuery));

function plgCalendarParam(param) {
    if (param == null) {
        param = [];
    }
    return param;
}

function plgCalendar(param) {
    var r = null;
    if (typeof param.func !== 'undefined') {
        if (param.func === "destroy") {

        } else if (param.func === "getValue") {

        }
    } else {
        /*****WORKING ON THIS***/
        var target = param['this'];
        if (target.is("div")) {
            var id = 'plgCalendar_' + window.BuildRandID();
            var $tableObject = $('<table/>', {
                'class': 'bigger',
                'id': id
            });
            $(target).append($tableObject);
            r = { 'id': id, 'init': true };
        } else {
            window.alert("calendar-plug-bs must be a div");
        }
        /*****WORKING ON THIS***/
    }
    return r;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2012-02-05
    • 1970-01-01
    • 2012-04-15
    • 2023-04-09
    • 2021-07-11
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多