我有这段代码。
$('#my-container-div').on('onAlbumLoad', function(event, index) {
...
});
我需要为每个索引实例分配一个不同的函数,但我不知所措。
在非编码器术语中,我正在寻找:如果index等于0,请执行此操作,如果index等于1,请执行此操作,如果index等于3,请执行此操作,依此类推。
答案 0 :(得分:0)
我没有按照您要做的事情的整体情况来了解这是否是最佳选择,但您可以使用代码查看index
然后决定下一步该怎么做。
可以使用if/else
或switch
语句或功能表来完成。
// if/else
$('#my-container-div').on('onAlbumLoad', function(event, index) {
if (index === 0) {
func1();
} else if (index === 1) {
func2();
}
});
// switch
$('#my-container-div').on('onAlbumLoad', function(event, index) {
switch(index) {
case 0:
func1();
break;
case 1:
func3();
break;
}
});
// function table
var fTable = [func1, func2, func3, func4];
$('#my-container-div').on('onAlbumLoad', function(event, index) {
if (index < fTable.length) {
fTable[index]();
}
});
任何这些都可行。
如果要比较的索引数是2或更少,我会使用if / else。
如果索引的数量超过两个并且您正在检查一组连续的索引,我会使用函数表,因为它更容易扩展而无需编写新代码(您只需向数组添加一个新函数) )。
如果要检查的索引超过两个并且不连续,我可能会使用switch语句。
答案 1 :(得分:0)
尝试创建相应的函数数组,每个函数对应一个index
;利用.trigger(event, [args])
来打电话
有"onAlbumLoad"
的{{1}}个活动;例如,index
作为参数
0
&#13;
var fns = [
function fn0() {
$(this).html("a")
},
function fn1() {
$(this).html("b")
},
function fn2() {
$(this).html("c")
}
];
var container = $("#my-container-div");
container.on("onAlbumLoad", function(event, index) {
fns[index].call(this)
});
$("input").on("change", function() {
container.trigger("onAlbumLoad", [this.value])
});
&#13;