将 JavaScript 函数参数传递给 jQuery

Passing JavaScript function parameters to jQuery

提问人:Justin Erdmier 提问时间:2/17/2022 更新时间:2/17/2022 访问量:40

问:

我正在处理一些遗留代码。在重构的第一阶段,我将所有脚本更新为 jQuery,因为它们在 vanilla JS 和 jQuery 之间切换不一致。一切都很容易转换。但是,我在试图弄清楚如何将参数从 JavaScript 函数获取到 jQuery 选择器/函数中时遇到了问题。

为了上下文,原作者编写了这个通用的 JS 函数:

    // Submits the specified form and command.
    function globalSubmitForm(formName, elementName, commandText) {
        document.getElementById(elementName).value = commandText;
        document.getElementById(formName).submit();
    }

我将函数重写为:

    function globalSubmitForm(formName, elementName, commandText) {
        $('#elementName').attr('value', 'commandText');
        $('#formName').submit();
    }

但是,我相信您已经看到,jQuery 选择器和函数正在逐字读取文本,而不是引用函数参数。

我没有尝试过太多实验。我仍然是 JavaScript 和 jQuery 的新手,并且刚刚生活在 jQuery 文档中,进行了大部分重构。但是,我无法找到任何文档或答案。

我尝试过的一件事是:

    $('#' + elementName).attr('value', commandText);
    $('#' + formName).submit();

但是,我还没有到可以测试这一点的地步。我的 IDE (PhpStorm 2021.3) 不再检查 JS 函数参数是否未使用,但我觉得可能有更好的方法来编写它。

我认为从commandText中删除引号可以正常工作,因为预期的参数是一个字符串。但是在jQuery选择器中连接参数感觉很笨拙,对我来说不太合适。

JavaScript jQuery 函数 语法 参数传递

评论

0赞 Alnitak 2/17/2022
那个LGTM......
2赞 Robin Zigmond 2/17/2022
您的上一个版本确实应该可以正常工作。像这样笨拙的字符串串联的现代 JS 替代方案,我建议您使用,是模板文字:.(但是我不明白为什么如果你可以访问现代JS,你为什么要将香草转换为jQuery,你应该将jQuery转换为香草imo!$(`#${elementName}`).attr('value', commandText)
0赞 Louys Patrice Bessette 2/17/2022
“在jQuery选择器中连接参数感觉很笨拙”......或。但会正常工作。
0赞 Louys Patrice Bessette 2/17/2022
我同意@Robin说将JS转换为jQuery从一开始就是有问题的。与 JS 相比,jQuery “更容易”编码,尤其是在 DOM 遍历时。但是有工作的JS...就个人而言,我会保持原样。
0赞 Justin Erdmier 2/17/2022
谢谢大家的帮助!我很感激。

答: 暂无答案