0

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

我有一个在这种情况下是数据表的对象,但它可以是任何 jQuery 对象。

我用 .ON 点击事件监听我的按钮点击,并使用我的对象的参数调用一个名为 checkbox 的函数:

var temporaryFilesTable;

$(document).ready(function() 
{
    temporaryFilesTable = $("#temporaryFilesTable").dataTable();

    $("#checkboxButton").on('click', function()
    {
        checkbox(temporaryFilesTable); 
    });
});

这工作正常,temporaryFilesTable 作为对象传递给函数复选框。

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

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

此函数创建一个具有多个按钮的模式。我想用这些按钮来调用selectFiltered(checkboxTable)等函数。

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

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

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

如果不将temporaryFilesTable 声明为全局对象,我能否以某种方式将此jQuery 对象放入.ON 点击监听器中?

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

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

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

谢谢阅读。

4

1 回答 1

0

我建议在将 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);
});
于 2013-05-21T12:13:16.147 回答