选择动态ID

时间:2012-11-21 08:27:50

标签: javascript jquery html

我有一个动态生成的表单,并且具有动态生成的id(以及可能的类)。表格是相同的,但他们在最后加上相关的ID。

如何选择每组并将代码应用于每一组?

switch(id_type_champ)
            {
            case 1:
                 $('#header-right-container').append(''+nom_champ+'<input type="text" id='+Id+'  >  ').trigger("create");
              break;
            case 2:
                 $('#header-right-container').append(''+nom_champ+'<input type="text" id='+Id+' > ').trigger("create");
              break;
            case 3:
                 $('#header-right-container').append(''+nom_champ+'<input type="date" id='+Id+' OnClick="aff_date(\'' + Id + '\')">').trigger("create");
              break;
            case 4:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+'    ><option value=0></option></select>').trigger("create");

                v++;
                 break;
            case 5:
                $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 6:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 7:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 8:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 9:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            default:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
             break;
            }

代码可以执行选项

的添加

2 个答案:

答案 0 :(得分:0)

你可以追加这样的案例:

switch (id_type_champ) {
    case 1:
    case 2:
        $('#header-right-container').append(nom_champ + '<input type="text" id=' + Id + ' > ').trigger("create");
        break;
    case 3:
        $('#header-right-container').append(nom_champ + '<input type="date" id=' + Id + ' OnClick="aff_date(\'' + Id + '\')">').trigger("create");
        break;
    // The cases below can be removed, except dor "default"
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    // ^ These can be removed.
    default:
        $('#header-right-container').append(nom_champ + '<select id=' + Id + ' ><option value=0> </option></select> ').trigger("create");

        v++;
        break;
}

案例1到3将创建input,以及4到9,默认为select
但是,您可以删除案例4-9,因为默认情况下会处理这些案例。

此外,不需要在空字符串前加nom_champ'' + nom_champ)。我假设这用于将nom_champ转换为字符串,但附加的'<input/select'将用于处理。

答案 1 :(得分:0)

为此创建自己的插件是理想的,例如您的原始功能:

function ListIds(var Id) {
switch(id_type_champ)
            {
            case 1:
                 $('#header-right-container').append(''+nom_champ+'<input type="text" id='+Id+'  >  ').trigger("create");
              break;
            case 2:
                 $('#header-right-container').append(''+nom_champ+'<input type="text" id='+Id+' > ').trigger("create");
              break;
            case 3:
                 $('#header-right-container').append(''+nom_champ+'<input type="date" id='+Id+' OnClick="aff_date(\'' + Id + '\')">').trigger("create");
              break;
            case 4:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+'    ><option value=0></option></select>').trigger("create");

                v++;
                 break;
            case 5:
                $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 6:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 7:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 8:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            case 9:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
              break;
            default:
                 $('#header-right-container').append(''+nom_champ+'<select id='+Id+' ><option value=0> </option></select> ').trigger("create");

                v++;
             break;
            }

}

然后,插件调用此代码:

    (function($){  
     $.fn.listIdValue = function() {  

        return this.each(function() {  
             ListIds($(this).id)

        });  
     };  
    })(jQuery); 

然后,您可以在元素或元素列表上调用此函数,例如:

$('#element').listIdValue();

$('.elementClass').listIdValue();