是否有使用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]);
};
谢谢。
答案 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
来轻松调整名称属性。
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;
哪个输出
<select name="add-name-here">
<option value="some-value">Option</option>
</select>
在您的情况下,您可以根据需要建立选择框,而不是将其添加到#wrapper
,而是将其附加到选择框中进行更改?不确定您的具体用例。希望能帮助到你。