jQuery Оптимизировать количество найденных элементов управления в Div

0

Я использую find следующим образом:

var controls = divid.find(':input');

который получает все входные элементы управления в div.

Мне нужно получить подсчеты каждого типа управления, как в следующем.

Там должен быть лучший способ.

var answeredRb = false,
    answeredCb = false,
    answeredTb = false,
    answeredSel = false,
    rbCt = divid.find('input[type=radio]').length,
    rbSelected = divid.find('input[type=radio]:checked'),
    rbSelectedCt = rbSelected.length,
    cbCt = divid.find('input[type=checkbox]').length,
    cbSelected = divid.find('input[type=checkbox]:checked'),
    cbSelectedCt = divid.find('input[type=checkbox]:checked').length,
    tbCt = divid.find('input[type=text]').length,
    tbs = divid.find('input[type=text]'),
    selCt = divid.find('select').length;

Спасибо за любую помощь.

  • 0
    хотя я должен признаться, что никогда не использовал это, это кажется подходящим для подчеркивания groupBy underscorejs.org/#groupBy
  • 0
    ... countby выглядит слишком многообещающе underscorejs.org/#countBy
Показать ещё 1 комментарий
Теги:
optimization

1 ответ

1
Лучший ответ

Не хватит ли этого:

var results = {};
var rules = ['input[type=radio]', 'input[type=radio]:checked', 'input[type=checkbox]', 'input[type=checkbox]:checked', 'input[type=text]', 'select'];

$(":input").each(function()
{
    for (var i=0; i<rules.length; i++)
    if ($(this).is(rules[i]))
        results[rules[i]] = results[rules[i]]+1 || 1;

});

console.log(results);

JSFiddle: http://jsfiddle.net/SyJxU/

Альтернатива: http://jsfiddle.net/SyJxU/1/

  • 0
    Выглядит интересно, увлеченно. Я посмотрю поближе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню