0

我想循环我的点击事件,以使代码更短。以后我可能会有 30 个这样的值。

我的工作代码

$(document).ready(function () {
    var last_click = '';

    $("#title").click(function() { last_click = 'title'; });
    $("#subtitle").click(function() { last_click = 'subtitle'; });
    $("#test").click(function() { last_click = 'test'; });
});

这就是我想要的(不工作)

我的猜测是,每个循环都在 dom 就绪状态下运行,然后再也不运行了,这样就永远不会触发点击事件?

$(document).ready(function () {
    var last_click = '';
    var contents = new Array();
    contents = ['title', 'subtitle', 'test'];

    $.each(contents , function(index, value){
        $("#" + value).click(function() { last_click = value; });
    });
});

如果没有像我想的那样解决,我会感谢一个很好的解决方法。

4

3 回答 3

6

我宁愿为你想要绑定它的所有元素添加一个类,例如class="last-click" 并将绑定定义为:

$(".last-click").on('click', function() {
    last_click = this.id;
}
于 2012-10-12T14:27:06.790 回答
0

如果你真的想让它更短,给他们一个类似的课程。

$(document).ready(function () {
    var last_click = '';    
    $(".theclass").click(function() { 
        last_click = this.id; 
    });
});
于 2012-10-12T14:26:30.523 回答
0

如果您的按钮或元素具有 value 属性,则可以这样做:

$(document).ready(function() {
    var last_click = '';
    $("input").click(function() {
        last_click = $(this).attr('value');
        alert(last_click);
    });    
});​

我假设您使用的是“输入类型 =“按钮”。此外,这里是演示,您可以在操作中看到它:http: //jsfiddle.net/rS2Gb/5/

于 2012-10-12T14:32:00.913 回答