给定一个字符串数组,其中每个字符串都是指定值的表单元素的html,我想循环遍历数组并删除每个元素的值。
我需要最终使用相同的字符串数组,但其中:
input
和textarea
元素值都设置为'' select
元素选项均已取消选择checkbox
元素都未经检查为此,我想我将元素包装在div中,设置所有元素属性,然后获取div的html。
这适用于除textareas
之外的所有元素我已经尝试了
.val('')
.attr('value', '')
.prop('value', '')
没有用于删除内存中textarea的值。
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(''));
&#13;
.test{
background-color:yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
&#13;
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>'
];
我明白我可以将html附加到dom中的div并执行我需要的内容,但我很好奇是否有办法在内存中执行此操作。
答案 0 :(得分:2)
只需使用.text('')
即可删除textarea
的内容。
$tempElements.text('');
以前使用prop
时,您不需要attr
。
// change
$tempElements.attr('value', '').prop('value', '');
// to
$tempElements.attr('value', '');
<强> Wokring example. 强>
答案 1 :(得分:1)
.attr('value', '')
和.val('')
不起作用,因为你正在推送元素的html并附加它,而不是实际的dom元素/ jquery对象。