Эта функция передает четвертый экземпляр динамического элемента управления (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);
});
}
Я работаю, но, как я уже упоминал, он работает только в четвертой инстанции. Как я могу найти, сколько из них есть на странице, и использовать это число для прокрутки и подключения всех их?
Вы можете изменить свои события, как показано ниже. Это будет работать во всех случаях вашего контроля
$('[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
звучит так, что вам нужно взглянуть на использование продвинутых селекторов - http://api.jquery.com/category/selectors/
Если все идентификаторы окна списка похожи, вы можете использовать somethign как это
$("[id^='MainContent_lbx')
это будет нацелено на все элементы с идентификатором, начинающимся с "MainContent_lbx"
.live()
теперь не просто устарела, она полностью удалена в версиях 1.9+.