我正在处理的项目需要添加一个新元素并使用编辑按钮对该元素进行更改。我如何才能只针对具有相同类的元素并对其进行更改而不影响具有相同类的其他元素?
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
传递给点击:
$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>
关于javascript - 如何仅对同一类的一个元素进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634884/