如何使用参数将jQuery对象收集到.on事件中,而不是在全局作用域中


How to gather a jQuery object into the .on event using parameters rather than being in the global scope?

这是一个棘手的问题。我会详细说明的。

我有一个对象,在这里是一个数据表,但它可以是任何jQuery对象。

我用。on click事件监听我的按钮点击,并调用一个名为checkbox的函数,该函数带有我的对象的参数:

var temporaryFilesTable;
$(document).ready(function() 
{
    temporaryFilesTable = $("#temporaryFilesTable").dataTable();
    $("#checkboxButton").on('click', function()
    {
        checkbox(temporaryFilesTable); 
    });
});

这可以正常工作,并且暂时将filestable作为对象传递给函数复选框。

对象"temporaryFilesTable"是对数据表的引用-两者最初都是在ajax触发的php/js文件的文档准备中调用的。

在另一个.js文件中,我存储了大多数可重用的函数,我有函数复选框(checkboxTable)。

这个函数创建一个有几个按钮的模态。我想使用这些按钮来调用函数,如selectFiltered(checkboxTable)。

因为函数复选框(temporaryFilesTable)带来了表对象,所以我需要重用该对象来触发下一个函数。我习惯使用onclick="function(parameter)"将变量作为参数传递给函数,或者在这种情况下,我必须使用模式:

function checkbox(checkboxTable)
{
...
    var content = '<a href="#" onclick="selectFiltered('+checkboxTable+') class="button>'
...
<!-- Trigger modal -->
}

这实际上似乎不工作,所以我的语法可能是错误的,但这不是真正的重点。我不愿意使用onclick,因为我目前正在修改我的代码,使用jQuery . onclick代替。

不声明临时filestable作为一个全局对象,我能以某种方式得到这个jQuery对象到一个。on点击监听器?

如果不是,我想我可以考虑将数据表对象声明为可以跨多个.js文件访问的全局对象,而不是将其传递给函数这么多?问题是,这意味着我必须编写函数来在每个数据表对象上触发jQuery,即使是那些当时可能不在DOM中的对象。我想那不太理想。

**附加信息**在我开始将表作为参数传递之前,以我想要的方式检查复选框的代码运行良好。我想这样做,因为我有多个页面,不同的表,我想使用相同的复选框勾选模式和功能。我可以张贴原始代码,如果它有帮助,但我不想混淆的问题。

澄清一下,我意识到我确实声明了我的临时filestable,在我的第一部分代码中将其放入全局作用域,但我不认为这在.js文件之间传递。这只是为了让我在文档准备之外使用它。

我建议尝试在html追加到dom后附加on click事件。当通过函数传递给字符串时,对象的效果不太好。所以我会尝试这样做:

$("#appedTo").append(content);
//Then select the a, and attach the on click event
$([selector to get the link]).on("click", function(){
    selectFiltered(checkboxTable);
});