javascript - 将 jQuery 脚本转换为可重用函数的正确语法

标签 javascript jquery function

所以我有一个如下结构的脚本:

$('.save-audition').on('click', function() {
    STUFF HAPPENS HERE
})

效果很好。但是,除了 .save-audition 之外,还有几个元素我想使用相同的脚本,只有几个变量不同。通过四处搜索,我认为下面的方法可以工作,但它似乎不起作用。我应该使用的正确语法是什么?

$('.save-audition').on('click', tps_save_listing(audition));
$('.save-job').on('click', tps_save_listing(job));

function tps_save_listing(type) {
    STUFF HAPPENS HERE
}

最佳答案

如果您只想将函数设计为事件处理程序,那么您可以将值作为数据传递,例如

$('.save-audition').on('click', {
  type: 'audition'
}, tps_save_listing);
$('.save-job').on('click', {
  type: 'job'
}, tps_save_listing);

function tps_save_listing(event) {
  snippet.log(event.data.type)
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="save-audition">1</div>
<div class="save-audition">2</div>
<div class="save-job">3</div>
<div class="save-job">4</div>

<小时/>

您的代码的问题是您立即调用该函数。

您还可以使用Function.bind()

$('.save-audition').on('click', tps_save_listing.bind(window, 'audition'));
$('.save-job').on('click', tps_save_listing.bind(window, 'job'));

function tps_save_listing(type) {
  snippet.log(type)
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="save-audition">1</div>
<div class="save-audition">2</div>
<div class="save-job">3</div>
<div class="save-job">4</div>

关于javascript - 将 jQuery 脚本转换为可重用函数的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37716057/

相关文章:

javascript - 在 moment.js 中设置浏览器语言

javascript - javascript JSON 对象中是否存在整数和字符串键的排序?

javascript - 按下提交按钮后淡化 <div> 元素

jQuery 砌体。调整大小时更新列宽度

javascript - 使用 Ajax 从维基百科返回数据?

javascript - Jquery 行删除对我不起作用,如何设置?

javascript - 为每个类单独继承静态成员

mysql - 无法让简单的 mysql 函数工作

function - 为什么要编写一个带有名称的 C++ lambda 以便可以从某个地方调用它?

c++函数重新定义(代码不工作 - 逻辑错误)