在内存jQuery对象中处理textarea值

时间:2016-08-22 10:29:38

标签: javascript jquery html

给定一个字符串数组,其中每个字符串都是指定值的表单元素的html,我想循环遍历数组并删除每个元素的值。

我需要最终使用相同的字符串数组,但其中:

  • inputtextarea元素值都设置为''
  • 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;
&#13;
&#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>'
];

Here is a jsFiddle

我明白我可以将html附加到dom中的div并执行我需要的内容,但我很好奇是否有办法在内存中执行此操作。

2 个答案:

答案 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对象。