如何在多个元素中修改所选元素的一个元素?

时间:2015-09-29 18:27:53

标签: javascript jquery

我想要做的就是抓住一个div,克隆它,修改它的一些内容,然后追加它。我虽然很难修改它的一些内容。

这是选择器

$('div.checkbox:first').html()

产生以下内容

<label><input type="checkbox" name="Categories[cat_name][]" value="Life" checked=""> Life</label>

我如何改变生活&#34;和平&#34;在这两个地方?请注意,它不会永远是#34; Life&#34;。

1 个答案:

答案 0 :(得分:2)

<强> jsFiddle Demo

更改input元素的值是微不足道的,jQuery为它提供了函数val

$('div.checkbox:first input[type="checkbox"]').val("Peace")

然而,改变&#34; Life&#34;和平&#34;要困难得多。那是因为&#34;生活&#34;它本身不在元素内部,它位于标签内部,该标签还包括输入元素。为了将此内容分开以进行更改,必须检查文本节点。 jQuery没有提供这样做的方法所以必须使用本机JavaScript

var div = $('div.checkbox:first');
//Change the input value to "Peace"
$('input[type="checkbox"]',div).val("Peace");

//locate the label element
var label = $('label',div);
//locate the last child of the child nodes of the label (this will be the textNode)
var labelText = label[0].childNodes[label[0].childNodes.length-1];
//assign the textNode's textContent value as "Peace" changing the text.
labelText.textContent = "Peace";

&#13;
&#13;
var div = $('div.checkbox:first');
$('input[type="checkbox"]',div).val("Peace");
var label = $('label',div);
var labelText = label[0].childNodes[label[0].childNodes.length-1];
labelText.textContent = "Peace";
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="checkbox">
<label><input type="checkbox" name="Categories[cat_name][]" value="Life" checked=""> Life</label>
</div>
&#13;
&#13;
&#13;