如何仅对具有相同类的一个元素进行更改
How to make changes to only one element with the same class
我正在进行的项目需要添加一个新元素,并使用编辑按钮对元素进行更改。我如何才能只针对具有相同类的元素并对其进行更改而不影响具有相同类的其他元素?
<CodePen例子/strong>。
var $input = $("#change");
var $btn = $("#add");
var $btne = $("#edit");
var $content = $("#content");
$btne.hide();
$btn.click( function(){
var typedInfo = document.getElementById("change").value;
var item = $('<li></li>');
item.append(typedInfo);
$content.append(item);
$content.on("click","li", function(){
});
item.click(function(){
var clickedItem = $(this);
$btne.show();
item.text(" ");
var typeNew = $('<input type="text" id="newInput" value = "edit">')
typeNew.click( function(e){
e.stopPropagation();
});
item.append(typeNew);
$btne.click( function(){
var editedInput = document.getElementById("newInput").value;
clickedItem.text(editedInput);
$btne.hide();
});
});
});
首先,id
在同一文档中应该是唯一的,所以你应该用类替换重复的,例如:
var typeNew = $('<input type="text" class="newInput" value = "edit">')
使用document.getElementById("newInput")
将针对该id
的所有元素,使用e.target
仅针对单击的一个:
var editedInput = e.target.value;
代替:
var editedInput = document.getElementById("newInput").value;
您应该将事件e
传递给click:
$btne.click( function(e){
//____________________^
var editedInput = e.target.value;
clickedItem.text(editedInput);
$btne.hide();
});
希望这对你有帮助。
var $input = $("#change");
var $btn = $("#add");
var $btne = $("#edit");
var $content = $("#content");
$btne.hide();
$btn.click( function(){
var typedInfo = $("#change").val();
var item = $('<li></li>');
item.append(typedInfo);
$content.append(item);
});
$content.on("click","li", function(){
var clickedItem = $(this);
var typeNew = $('<input type="text" class="newInput" value="'+clickedItem.text()+'">')
$btne.show();
$(this).html(typeNew);
typeNew.click( function(e){
e.stopPropagation();
});
});
$btne.click( function(e){
$($content).find('li>input').each(function(){
$(this).parent().text($(this).val());
})
$(this).hide();
});
ul {
display:flex;
flex-direction:column;
}
li{
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="change" value="Type Here">
<button id="add">Add Button</button>
<button id="edit">Edit Button</button>
<ul id="content"></ul>
如果元素将以类似数组的方式添加,并且每次都要编辑最后一个元素,则可以使用:last选择器
$('.class:last')
您可以为要更改的元素提供唯一ID。它仍然可以有相同的类,但是您可以通过引用它的ID而不是它的类名来引用它。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 无法选择除一个元素外的所有元素
- 使用jquery contains获取一个元素并添加类
- $(.class).empty总是缺少一个元素
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 如何在一个元素动画之后延迟
- jQuery转盘下一个元素没有滑入
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- 使用数据属性将HTML数据复制到另一个元素
- 如何选择给定类的上一个元素
- 动态修改一个元素,使其与给定的选择器匹配