设置存储在变量中的元素的属性

时间:2016-03-31 02:18:39

标签: javascript jquery

是否有使用jQuery动态设置存储在变量中的HTML元素的属性?

例如,在我的应用程序中的某一点,用户创建了不同数量的选择输入字段。对于PHP的最终处理,元素需要以name='input'+siteNumber+'['+x+']'格式命名,其中x是for循环中创建的元素数。

这是我正在考虑的事情的粗略草图 - 这不是功能性代码,它只是一个插图。

$(".number_select").change(function(){
    numberFound = $(this).val();
    siteNumber = $(this).parent().attr('data-site_number');
    //HERE'S THE INPUT TO BE NAMED
    selectInput = "<select></select>";

    this['inputArray' + siteNumber] = [];

    for(x = 1; x <= numberFound; x++){  
        //THIS IS WHAT I'D LIKE TO ACCOMPLISH - SETTING THE ATTRIBUTE - THOUGH THIS UNDERSTANDABLY DOES NOT WORK IN THIS PARTICULAR FORMAT           
        this['inputArray' + siteNumber].push(selectInput.attr("name", "species"+siteNumber+"["+x+"]"));
    };

    $(this).parent().append(this['inputArray' + siteNumber]);
};

谢谢。

2 个答案:

答案 0 :(得分:1)

谢谢大家 - 我实际上最终决定以不同的方式处理它,但它完美地工作 - 而不是将元素存储在变量中,而是使用函数代替......

function inputs(siteNumber, x){
    return ("<select name='selectInput"+siteNumber+"["+x+"]'>"+list+"</select>");
};

$(".number_select").change(function(){
    numberFound = $(this).val();
    siteNumber = $(this).parent().attr('data-site_number');

    this['inputArray' + siteNumber] = [];

    for(x = 1; x <= numberFound; x++){
        this['inputArray' + siteNumber].push(inputs(siteNumber, x));
    };

    $(this).parent().append(this['inputArray' + siteNumber]);
};

不知道为什么我一开始没有想到这一点,现在对我来说似乎很明显。哦,好好生活和学习。

答案 1 :(得分:0)

要模糊地回答你的问题,你可以动态生成一个元素,并使用jQuery的attr来轻松调整名称属性。

&#13;
&#13;
var select = $('<select>').attr('name', 'add-name-here');

$('<option>').attr('value', 'some-value').text('Option').appendTo(select);

$('#wrapper').html(select);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
   
<div id="wrapper"></div>
&#13;
&#13;
&#13;

哪个输出

<select name="add-name-here">
    <option value="some-value">Option</option>
</select>

在您的情况下,您可以根据需要建立选择框,而不是将其添加到#wrapper,而是将其附加到选择框中进行更改?不确定您的具体用例。希望能帮助到你。