Как я могу использовать jQuery для выбора элемента и действия над ним без предложения охраны? - PullRequest
3 голосов
/ 31 мая 2011

Я переписываю какой-то старый JavaScript с помощью jQuery и хотел бы знать, как написать его более аккуратно.

Сценарий, с которого я начинаю:

for (var i = 0; i < form1.elements.length; i++) {
    var element = form1.elements[i];
    alert(element.id)

    if (Left(element.id, 15) === 'selHeaderFilter' || 
        element.id === 'ddlHierarchy1') {
        garrHeaderState[element.id] = element.selectedIndex
    }
}

ЯЯ не совсем уверен, почему он был написан так, как был, но я думаю , что он просто пытается добавить 2 элемента в массив (который объявлен глобально).

Мой первый удар в этом дал мне:

var hierarchy = $('[id$=ddlHierarchy1]');
var headerFilter = $('[id*="selHeaderFilter"]');

if (hierarchy)
    garrHeaderState[hierarchy.attr('id')] = hierarchy.val();

if (headerFilter)
    garrHeaderState[headerFilter.attr('id')] = headerFilter.val();

Но мне не очень нравится процесс объявления иерархии просто так, чтобы, если он существует, я мог добавить его выбранный индекс вмассив.Есть ли лучший способ написания этого кода?

Ответы [ 2 ]

4 голосов
/ 31 мая 2011

Вы можете использовать каждую функцию jQuery.

$('[id$=ddlHierarchy1], [id*="selHeaderFilter"]').each(function(){
    var item = $(this);
    garrHeaderState[item.attr('id')] = item.val();
});
1 голос
/ 31 мая 2011

Не проверено:

$('[id$=ddlHierarchy1], [id*="selHeaderFilter"]').each(function(){
    garrHeaderState[this.id] = $(this).val();
})

Редактировать: обновлено в соответствии с изменениями из другого поста, чтобы избежать кеширования и повторного запуска функции jQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...