给定一个字符串数组,其中每个字符串都是已分配值的表单元素的 html,我想循环遍历该数组并删除每个元素的值。
我需要得到相同的字符串数组,但其中:
input
和textarea
元素值均设置为 ''select
元素选项全部取消选择checkbox
元素全部未选中- 我将元素背景设置为黄色只是为了显示正在选择文本区域
为此,我想将元素包装在 div 中,设置所有元素属性,然后获取 div 的 html。
这适用于除文本区域之外的所有元素
我已经尝试过
.val('')
.attr('值', '')
.prop('值', '')
没有人能够删除内存中文本区域的值。
var elements = [
'<input type="checkbox" checked>',
'<input type="text" value="1041">',
'<input type="text" value="activities">',
'<textarea>some text</textarea>',
'<select><option value=""></option><option value="1" selected>1</option></select>',
'<select><option value=""></option><option value="1" selected>1</option></select>',
'<textarea>some text</textarea>'
];
var newElements = [];
$.each(elements, function(i, item) {
var $temp = $('<div>').html(item);
var $tempElements = $temp.find('input:not(.row-select), textarea, select').addClass('test');
//$tempElements.val(''); // doesnt work at all
$tempElements.attr('value',''); // works for text inputs but not textarea
$tempElements.attr('checked', false);
$tempElements.find('option').attr('selected', false);
newElements.push($temp.html());
});
$('#result').html(newElements.join(''));
.test{
background-color:yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
预期结果:
var elements = [
'<input type="checkbox">',
'<input type="text" value="1041">',
'<input type="text" value="activities">',
'<textarea>some text</textarea>',
'<select><option value=""></option><option value="1" selected>1</option></select>',
'<select><option value="" selected></option><option value="1">1</option></select>',
'<textarea></textarea>'
];
Here is a jsFiddle
我确实知道我可以将 html 附加到 dom 中的 div 中并在那里执行我需要的操作,但我很好奇是否没有办法在内存中执行此操作。
最佳答案
只需使用.text('')
即可删除textarea
的内容。
$tempElements.text('');
而且之前使用attr
时不需要prop
。
// change
$tempElements.attr('value', '').prop('value', '');
// to
$tempElements.attr('value', '');
<强> Wokring example.
关于javascript - 操作内存中 jQuery 对象的 textarea 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39077189/