jQuery单击每个循环内部

时间:2012-10-12 14:21:31

标签: javascript jquery arrays click each

我想循环点击事件,以缩短代码。我稍后可能会有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; });
    });
});

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

3 个答案:

答案 0 :(得分:6)

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

$(".last-click").on('click', function() {
    last_click = this.id;
}

答案 1 :(得分:0)

如果你真的想缩短它,那就给它们一个类似的课程。

$(document).ready(function () {
    var last_click = '';    
    $(".theclass").click(function() { 
        last_click = this.id; 
    });
});

答案 2 :(得分:0)

如果你的按钮或元素有值属性,你可以这样做:

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

我假设您正在使用"输入类型="按钮"。此外,您还可以在演示中看到它:http://jsfiddle.net/rS2Gb/5/