将一组id绑定到事件处理程序

时间:2011-08-20 13:46:41

标签: jquery jquery-selectors

var fields = ["FirstName", "LastName", "Profession", "Address", "City", "State", "Phone", "Email", "Message"];
$.each(fields, function()
{
    var $this = $("#" + this);
    $this.bind("focus", function()
    {
        //
    });
});

有没有更好的方法将事件方法绑定到数组?像这样:

$.each(fields).bind("focus", function()
{
    //
})

3 个答案:

答案 0 :(得分:4)

你可以这样做:

var fields = ["FirstName", "LastName", "Profession", "Address", "City", "State", "Phone", "Email", "Message"];
fields = "#" + fields.join(", #");
$(fields).bind("focus", function()
{
    //Your function
});

但最好是给所有元素一个类并像这样绑定:

$(".focusDoFunc").bind("focus", function()
{
    //Your function
});

答案 1 :(得分:1)

你不能只把所有这些元素都放在同一个类上并且这样做:

$('.classname').bind("focus", function()
{
    //
});

答案 2 :(得分:0)

为所有这些元素提供一个公共类名“formFields”,并使用delegate在表单级别附加事件处理程序。这样你就不必将事件处理程序附加到表单

中的每个元素
$("formSelector").delegate(".formFields", "focus", function(){
    //Here do your stuff
});

如果您希望将focus事件附加到表单中的所有元素,那么您甚至不需要添加我们可以使用的类inputselect和{{1选择器。就这样做

textarea