这只是一个简单的编辑。我想更改标题,所以如果我要点击“编辑”图标,标题将变为文本字段,“编辑”图标将变为“保存”图标。
$('#editheader').click(function(e){
var category = $(this).closest("h3").text();
$( this ).replaceWith( "<a href=''> <i class='fa fa-save' aria-hidden='true' style='color:green'></i> </a>" );
$( this ).closest("h3").replaceWith( "<input value='" + category + "' >" );
e.preventDefault();
});
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 class="panel-title"> Letters To Investors
<a href="#" id="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
<h3 class="panel-title"> Tax Documents
<a href="#" id="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
答案 0 :(得分:0)
我在我的html标签中添加了一个表单,然后制作了这个。
$('#editheader').click(function(e){
var category = $(this).closest("h3").text();
$(this).hide();
$(this).closest("h3").hide();
$('#editForm').show();
$('input[name=category]').val(category);
//$( this ).replaceWith( "<a href=''> <i class='fa fa-save' aria-hidden='true' style='color:green'></i> </a>" );
//$( this ).closest("h3").replaceWith( "<input value='" + category + "' >" );
e.preventDefault();
});
</script>
答案 1 :(得分:0)
这是因为replaceWith()删除了你引用的元素! 只需切换线条即可解决此问题。
$('.editheader').click(function(e) {
e.preventDefault();
let $h3 = $(this).closest("h3");
let category = $(this).closest("h3").text();
$h3.toggleClass('edit');
if ($h3.hasClass('edit')) {
const newCategory = $h3.children('input').val();
$h3.children('input').remove();
$h3.children('span').text(newCategory);
} else {
$h3.children('span').text('');
$h3.prepend("<input value='" + category + "' >");
$(this).children('i').removeClass('fa-pencil').addClass('fa-save');
}
});
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 class="panel-title">
<span>Letters To Investors</span>
<a href="#" class="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
<h3 class="panel-title">
<span>Tax Documents</span>
<a href="#" class="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
答案 2 :(得分:0)
您可以通过以下方式改进代码:
id
,因为ID必须是对classname的唯一更改a
标记,只需更改图标的类。span
轻松定位h3
$('.editheader').click(function(e) {
if(!$(this).hasClass('save')){
var category = $(this).siblings("span").text();
$(this).siblings('span').replaceWith("<input value='"+category+"'/>");
} else {
var category = $(this).siblings("input").val();
$(this).siblings('input').replaceWith("<span>"+category+"</span>");
}
$(this).toggleClass('save');
$('i',this).toggleClass('fa-save fa-pencil');
e.preventDefault();
});
&#13;
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 class="panel-title">
<span>Letters To Investors</span>
<a href="#" class="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
<h3 class="panel-title">
<span>Tax Documents</span>
<a href="#" class="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
&#13;
答案 3 :(得分:0)
首先,通过子元素更改父元素是有问题的。解决方法是将要更改的文本放在另一个占位符元素(如 span )中,然后将其替换为所需的输入元素。
另一个问题是将元素 a href 替换为另一个元素,而后续代码则取决于原始元素。刚刚更改了JQuery代码的顺序,因此它按逻辑顺序执行。
最后, a href 的ID是相同的。改为使用类。
$('.editheader').click(function(e){
var category = $(this).closest("h3").text();
$( this ).prev().replaceWith( "<input type='text' value='" + category + "' >" );
$( this ).replaceWith( "<a href=''> <i class='fa fa-save' aria-hidden='true' style='color:green'></i> </a>" );
e.preventDefault();
});
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 class="panel-title"> <span>Letters To Investors</span>
<a href="#" class="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>
<h3 class="panel-title"> <span>Tax Documents</span>
<a href="#" class="editheader">
<i class="fa fa-pencil" aria-hidden="true" style="color:green"></i>
</a>
</h3>