我有一个选择输入,我通过jQuery设置multiple属性。然后我有一个console.log确认代码正常运行,然后如果我再次console.log它不再存在。有什么建议吗?
thisQuestionHTML
只是一个HTML代码块(2个div包含在我作为jQuery对象的select语句中。
line 1: $(thisQuestionHTML).find('.answerValue').attr('multiple','multiple');
line 2: console.log($(thisQuestionHTML).find('.answerValue').attr('multiple','multiple'));
line 3: console.log($(thisQuestionHTML));
第1行:这是我期望实际设置它的非调试代码
第2行:此调试代码确认已设置。它返回带有multiple="multiple"
<select class="answerValue" data-questionid="a0NJ0000008ZwjOMAS" multiple="multiple"></select>
第3行:此调试代码返回选择语句,不含 multiple
属性。
<div class="control-group">
<span class="control-label">MS picklist question</span>
<div class="controls">
<select class="answerValue" data-questionid="a0NJ0000008ZwjOMAS"></select>
</div>
</div>
答案 0 :(得分:1)
您正在三行中的每一行上创建一个新的jQuery对象,因为thisQuestionHTML
只是一个HTML字符串。 jQuery没有更新字符串,thisQuestionHTML
永远不会更改。
第2行:此调试代码确认已设置。
这不是真的,你再次设置值(注意attr()
的两个参数)。
存储对象的引用,而不是每次都创建新对象:
var obj = $(thisQuestionHTML);
obj.find('.answerValue').attr('multiple','multiple');
console.log(obj); // contains updated select
答案 1 :(得分:0)
使用filter()
$(thisQuestionHTML).filter ('.controls .answerValue').attr('multiple','multiple');