2012-10-12 93 views
0

我想循環我的點擊事件,使代碼更短。我以後可能會有30個這樣的值。jQuery點擊每個循環內

我的工作代碼

$(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; }); 
    }); 
}); 

如果沒有解決我的問題,我會感謝一個很好的解決方法。

+1

你有什麼應該工作..你是什麼意思觸發點擊事件?您將click事件綁定到'contents'中的元素列表。 –

+0

只需要注意一點:'contents'中的'new Array()'在另一個數組的下一行被破壞;這不是必需的。 – apsillers

+0

您的代碼適用於我:http://jsfiddle.net/barmar/rS2Gb/6/ – Barmar

回答

6

我一類,而添加到您想要把它綁定到所有元素,如class="last-click" 並定義爲一次綁定:

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

如果你真的想把它縮短,給他們一個類似的類。

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

如果你有你的按鈕或元素值屬性,你可以做到這一點。

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

我假設您正在使用「輸入類型=」按鈕」另外這裏你可以看到它在行動演示:http://jsfiddle.net/rS2Gb/5/