Привязать массив идентификаторов к обработчику событий - PullRequest
2 голосов
/ 20 августа 2011
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 ]

4 голосов
/ 20 августа 2011

Вы можете сделать это:

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 голос
/ 20 августа 2011

Разве вы не можете просто дать всем этим элементам один класс и сделать:

$('.classname').bind("focus", function()
{
    //
});
0 голосов
/ 20 августа 2011

Дайте всем этим элементам общее имя класса "formFields" и используйте delegate для присоединения обработчика событий на уровне формы.Таким образом, вам не нужно прикреплять обработчик событий к каждому элементу формы

$("formSelector").delegate(".formFields", "focus", function(){
    //Here do your stuff
});

Если вы хотите, чтобы событие focus было присоединено ко всем элементам формы, вам даже не нужнодобавить класс, который мы можем использовать input, select и textarea селектор.Просто сделай это

$("formSelector").delegate("input, select, textarea", "focus", function(){
    //Here do your stuff
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...