这是一个场景:我有一组按钮,我想在点击时绑定到相应的功能。这些按钮的ID与其相应功能的名称相同。我能做到这一点:
$("#kick").click(kick);
$("#push").click(push);
$("#shove").click(shove);
但我很懒,想更懒惰地做这件事(就我的本性而言)。由于按钮都包含在块元素中,我想做这样的事情:
$("#button_holder > span").each(function () {
var doThis = this.id;
$(this).click(doThis);
});
除此之外不起作用。有什么建议吗?
答案 0 :(得分:7)
与其他回答者一样,我不确定这是“真正的”懒惰(如程序员的优点),但只有你知道你的实现细节。
如果你真的想做这样的事情,你可以使用一个对象来存储你的特定功能,然后使用字符串来查找它们:
var myFunction = {
kick: kick,
push: push,
shove: shove
};
$("#button_holder > span").each(function () {
var doThis = this.id;
$(this).click(myFunction[doThis]);
});
或者作为匿名函数:
var myFunction = {
kick: function() { /*do kick */ },
push: function() { /*do push */ },
shove: function() { /*do shove */ }
};
$("#button_holder > span").each(function () {
var doThis = this.id;
$(this).click(myFunction[doThis]);
});
答案 1 :(得分:0)
$("#button_holder > span").each(function () {
var doThis = this.id;
$(this).click(function(doThis){
alert(doThis);
});
});
答案 2 :(得分:0)
<input type="submit" id="kick" value="Kick Me">
<input type="submit" id="push" value="Push Me">
<script type="text/javascript>
$(function() {
$("input[type=submit]").each(function () {
var doThis = this.id;
$(this).click(doThis);
});
});
</script>
答案 3 :(得分:0)
我想我没有看到这一点。无论如何,您需要单独创建每个函数,这种编程通常很难让其他人编程。也许如果你有几十个按钮并且它是丢弃的代码,我可以理解但是......可能不是......
为什么不将all绑定到单个函数并在事件时间基于this.id进行确定?
答案 4 :(得分:0)
var doThis = this.id;
$(this).click(doThis);
你需要传递一个函数:
$(this).click(function(doThis){
alert(doThis);
});
或:
function myFunc(){};
$(this).click(myFunc);