首页 > 解决方案 > 获取 jquery 中的链接元素以在 $.fn.{FunctionName} 中使用

问题描述

我正在创建一个基于 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 ......而且我不知道如何检索......

标签: javascriptjquerypluginsjquery-plugins

解决方案


通过这种方式解决:

(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;
}

推荐阅读