我正在处理的项目需要添加一个新元素,并使用编辑按钮对元素进行更改。如何只定位具有相同类的元素并对其进行更改而不影响具有相同类的其他元素?
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();
});
});
});
答案 0 :(得分:3)
首先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();
});
&#13;
ul {
display:flex;
flex-direction:column;
}
li{
}
&#13;
<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>
&#13;
答案 1 :(得分:0)
如果元素将以类似数组的方式添加,并且您希望每次都编辑最后一个元素,则可以使用:last selector
$('.class:last')
答案 2 :(得分:0)
您可以指定要更改唯一ID的元素。它仍然可以具有相同的类,但您可以通过引用其ID而不是其类名来引用它。