我不想运行一个大的if,else,else,else类型语句。我基本上是在寻找一个excel INDIRECT()等价物,在那里我得到id的字符串,并根据我正在迭代的id调用该字符串作为函数。 我有一些类的输入,jQuery使得微调器基于。
$(document).ready(function(){
var primary = $(".spinnerPrimary");
var secondary = $(".spinnerSecondary");
primary.spinner({
min: 7,
max: 20,
});
primary.spinner("value", 10);
secondary.spinner({
min: -4,
max: 4
});
secondary.spinner("value", 0);
当做max,min等时,我想做一个调用函数来更新各种span容器的旋转事件。我可以运行一个只更新每个span的函数,或者运行一个大的if / else / else case-type语句,所以我确实有选项。我真正想要的是使用this.attr("id")
来拉取id,以便每个微调器都根据输入微调器的id设置旋转,这是与定义的名称相对应的相同字符串功能。
$(document).ready(function(){
var primary = $(".spinnerPrimary");
var secondary = $(".spinnerSecondary");
primary.spinner({
min: 7,
max: 20,
spin: //fancy code
});
primary.spinner("value", 10);
secondary.spinner({
min: -4,
max: 4,
spin: //same fancy code
});
secondary.spinner("value", 0);
function x() {
//fancy equation code
};
function y() {
//fancy equation code
};
在上面的例子中,如果id是“x”,那么我希望它调用函数x(),id =“y”调用y()等。我正在寻找如何做这个特定的场景,而不是如何以另一种方式做(例如,基于已知的id和相应的函数运行if / else)。如果我提到的两种选择是唯一的方法,那就这样吧。
复制另一个问题:非常相似,但也需要帮助映射函数并将它们应用于微调器。 jQuery仍然是新手,因此是一个多方面的(?)问题。
答案 0 :(得分:0)
以这种方式尝试:
// Setup your functions as a map, so they are easily
// accessible by name.
var fns = {
x: function(){
console.log('running x!');
},
y: function(){
console.log('runnning y!');
}
}
var primary = $(".spinnerPrimary");
primary.spinner = function(options){
// Tie your `spin` function to the spinner.
console.log('spinning');
options.spin();
}
primary.spinner({
min: 7,
max: 20,
// Assign `spin` to one of the `fns` from above
// using `id` as a key.
spin: fns[primary.attr('id')]
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="x" class="spinnerPrimary"></div>