Проводные кнопки для выбора / отмены выбора из динамически создаваемых списков

0

Эта функция передает четвертый экземпляр динамического элемента управления (ListBox с кнопками select all/unselect all):

function pageLoad() {

    $('#MainContent_lbx4_AllLB').live("click", function () {
        $('#MainContent_lbx4_RegionTypeLB').find('option').attr('selected', true);
    });

    $('#MainContent_lbx4_NoneLB').live("click", function () {
        $('#MainContent_lbx4_RegionTypeLB').find('option').attr('selected', false);
    });

}

Я работаю, но, как я уже упоминал, он работает только в четвертой инстанции. Как я могу найти, сколько из них есть на странице, и использовать это число для прокрутки и подключения всех их?

Теги:

2 ответа

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

Вы можете изменить свои события, как показано ниже. Это будет работать во всех случаях вашего контроля

$('[id^=MainContent_lbx]').live("click", function () {

    //split by underscore
    var main_id = $(this).prop('id').split('_'); 

    //pop last element in the array to check for AllLB or NoneLB
    var popLast = main_id.pop();

    //replace AllLB or NoneLB with RegionTypeLB
    main_id[2] = 'RegionTypeLB';
    var regionId = '#' + main_id.join('_');

    if(popLast == 'AllLB')
    {
        $(regionID).find('option').attr('selected', true);
    }
    else if(popLast == 'NoneLB')
    {
        $(regionID).find('option').attr('selected', false);
    }
});

Из документации jquery: Начиная с jQuery 1.7, метод.live() устарел. Используйте.on() для присоединения обработчиков событий. Пользователи более старых версий jQuery должны использовать.delegate() в предпочтении.live(). Он удален в jQuery 1.9

  • 0
    Но как я могу дифференцировать окончание, то есть AllLB против NoneLB. Поскольку NoneLB должен установить selected на false.
  • 0
    Функция .live() теперь не просто устарела, она полностью удалена в версиях 1.9+.
Показать ещё 4 комментария
1

звучит так, что вам нужно взглянуть на использование продвинутых селекторов - http://api.jquery.com/category/selectors/

Если все идентификаторы окна списка похожи, вы можете использовать somethign как это

$("[id^='MainContent_lbx') 

это будет нацелено на все элементы с идентификатором, начинающимся с "MainContent_lbx"

Ещё вопросы

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