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

Javascript 将jQuery脚本转换为可重用函数的正确语法,javascript,jquery,function,Javascript,Jquery,Function,所以我有一个这样的脚本: $('.save-audition').on('click', function() { STUFF HAPPENS HERE }) 它工作得很好。但是,除此之外还有几个因素。除了海选,我想使用同一个脚本,只是几个不同的变量。通过四处搜索,我认为下面的方法会起作用,但它似乎不起作用。我应该使用的正确语法是什么 $('.save-audition').on('click', tps_save_listing(audition)); $('.save-job').

所以我有一个这样的脚本:

$('.save-audition').on('click', function() {
    STUFF HAPPENS HERE
})
它工作得很好。但是,除此之外还有几个因素。除了海选,我想使用同一个脚本,只是几个不同的变量。通过四处搜索,我认为下面的方法会起作用,但它似乎不起作用。我应该使用的正确语法是什么

$('.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')。在('click')上{
类型:“试听”
},tps_保存_列表);
$('.save job')。在('单击'){
类型:“工作”
},tps_保存_列表);
功能tps_保存_列表(事件){
snippet.log(event.data.type)
}

1.
2.
3.

4
如果只希望将函数设计为事件处理程序,则可以将值作为数据传递,如

$('save audition')。在('click')上{
类型:“试听”
},tps_保存_列表);
$('.save job')。在('单击'){
类型:“工作”
},tps_保存_列表);
功能tps_保存_列表(事件){
snippet.log(event.data.type)
}

1.
2.
3.

4
您将立即在
tps\u save\u listing(audition)
tps\u save\u listing(job)
调用函数,而不是传递对
tps\u save\u listing
函数的引用。您也可以使用将变量传递给事件处理程序
tps\u save\u listing

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

function tps_save_listing(event) {
    // STUFF HAPPENS HERE
    console.log(event.data);
}
var试听=123;
var job=“abc”;
$(“保存试听”)。在(“单击”,空,试听,tps_保存_列表);
$(.save job”)。在(“单击”,null,job,tps\u保存\u列表);
功能tps_保存_列表(事件){
console.log(event.data)
}

拯救试镜
保存作业

您将立即在
tps\u save\u listing(audition)
tps\u save\u listing(job)
调用函数,而不是传递对
tps\u save\u listing
函数的引用。您也可以使用将变量传递给事件处理程序
tps\u save\u listing

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

function tps_save_listing(event) {
    // STUFF HAPPENS HERE
    console.log(event.data);
}
var试听=123;
var job=“abc”;
$(“保存试听”)。在(“单击”,空,试听,tps_保存_列表);
$(.save job”)。在(“单击”,null,job,tps\u保存\u列表);
功能tps_保存_列表(事件){
console.log(event.data)
}

拯救试镜
保存作业

您需要的是函数应用程序。尝试下面的代码,然后我可以解释发生了什么

$('.button1')。在('click',应用(myFunction,['foo']);
$('.button2')。on('click',applicated(myFunction,['bar',bat']);
函数myFunction(text1、text2){
警报(text1);
如果(文本2)
警报(文本2)
}
应用的函数(func,args){
返回函数(){
函数应用(空,参数);
}
}

你要找的条形码叫做函数应用程序。尝试下面的代码,然后我可以解释发生了什么

$('.button1')。在('click',应用(myFunction,['foo']);
$('.button2')。on('click',applicated(myFunction,['bar',bat']);
函数myFunction(text1、text2){
警报(text1);
如果(文本2)
警报(文本2)
}
应用的函数(func,args){
返回函数(){
函数应用(空,参数);
}
}

Bar
记录的代码段
未捕获的InvalidCharacterError:未能对“文档”执行“createElement”:提供的标记名(“[object Window]”)不是有效的名称
@guest271314所使用的浏览器?看起来它来自
snippet.log()
语句。实际上,传递给
.on()
的第二个参数应该是选择器或
null
,请参阅下文。如果将
null
作为第二个参数传递给
.on()
,则不会记录错误的事件数据。为什么要将
this
设置为
window
而不是
.bind()
处的原始选择器?@guest271314
假定此
是dom元素引用,不是jQuery对象,因此设置选择器可能无法解决此问题issue@guest271314上面使用的格式是可选记录
选择器
数据
的地方
未捕获的InvalidCharacterError:未能在“文档”上执行“createElement”:提供的标记名(“[对象窗口]”)是否为所用浏览器的@guest271314的有效名称
?看起来它来自
snippet.log()
语句。实际上,传递给
.on()
的第二个参数应该是选择器或
null
,请参阅下文。如果将
null
作为第二个参数传递给
.on()
,则不会记录错误的事件数据。为什么要将
this
设置为
window
而不是
.bind()
处的原始选择器?@guest271314
假定此
是dom元素引用,不是jQuery对象,因此设置选择器可能无法解决此问题issue@guest271314上面使用的格式是可选的
选择器
数据
。谢谢。所有答案都很好,但你是第一位,你的解决方案对我的申请有效。谢谢。所有答案都很好,但你是第一个,你的解决方案对我的申请有效。