连接按钮以从动态创建的列表框中选择/取消选择

时间:2013-09-23 14:35:10

标签: jquery asp.net

此函数连接动态控件的第四个实例(带有select all / unselect all按钮的ListBox):

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 个答案:

答案 0 :(得分:1)

听起来你需要看一下使用高级选择器 - http://api.jquery.com/category/selectors/

如果所有列表框ID都相似,您可以像这样使用某些

$("[id^='MainContent_lbx') 

这将定位ID为“MainContent_lbx”的所有元素

答案 1 :(得分: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 Documentation ,从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。它已在jQuery 1.9中删除