select上的设置属性不是持久的

时间:2014-06-27 13:48:36

标签: javascript jquery attributes

我有一个选择输入,我通过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语句
<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>​

2 个答案:

答案 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');