Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用自定义jQuery插件中从另一个js文件声明的对象_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用自定义jQuery插件中从另一个js文件声明的对象

Javascript 如何使用自定义jQuery插件中从另一个js文件声明的对象,javascript,jquery,Javascript,Jquery,我试图围绕jquery DataTables创建一个包装器,在这里我将编写自定义控件,但我认为这个问题更多地与jquery有关 在我的HTML(视图)中,我这样调用我的自定义插件: <script type="text/javascript"> $(document).ready(function () { $('#example').MyDataTable("some string"); }); </script> 我还有另一个.js文

我试图围绕
jquery DataTables
创建一个包装器,在这里我将编写自定义控件,但我认为这个问题更多地与
jquery
有关

在我的
HTML
(视图)中,我这样调用我的自定义插件:

<script type="text/javascript">
    $(document).ready(function () {
        $('#example').MyDataTable("some string");
    });
</script>
我还有另一个
.js
文件,我将其包含在同一页面中,并用于初始化我的处理程序。从这个文件中,我想使用
oTable
如下:

  $('#btnClearFilter').on('click', function () {
    console.log(oTable);
    oSettings = oTable.fnSettings();
我尝试了不同的方法来获得
oTable
obejct。大多数时候我都没有定义。我能使其工作的唯一方法是在文件中,其中是我进行此修改的包装器代码:

var oTable;
(function ($) {
    $.fn.bsDataTable = function (pageName) {

但我不喜欢这样公开
oTable
,我认为这是一个很好的机会,可以用更好的方式实现。

您必须创建一个全局变量,该变量可以在
.js
文件中访问,我在你的问题的最后一部分看到了它,但是在
js
中定义变量,然后从插件
.js
中设置它。我相信您将从该变量中获取对象。

+1问得好,但是您似乎根本没有在任何选择器上实例化
MyDataTable
?@RobSchmuecker
MyDataTable
更像是一个包装器。我真正要做的是实例化原始的
DataTable
-
var-oTable=$(this.selector)
但使用此包装器主要是添加自定义的
HTML
(用于不同的过滤器-文本框、下拉列表等),然后使用不同的
.js
文件为不同的视图设置处理程序。我不知道这是否有意义,也许有更好的方法。我只是不想以
$(“#mydiv).数据表(选项).MyWrapper(选项).
是的,它是双向的。你认为它更好吗?毕竟我只有一个包装器(我的gloabl现在在那里)和许多外部
.js
文件-每个视图一个。因此我必须在每个文件中定义它。不确定这是否是改进?不,您不需要在所有文件中定义它,但您可以创建一个公共js文件,其中将包含变量列表,您只需为该变量赋值,并在使用后使其为空。
var oTable;
(function ($) {
    $.fn.bsDataTable = function (pageName) {