我在客户端有一个功能性的内联编辑脚本,但我想添加一个像<input type="button" value="edit here">
这样的按钮,当有人点击按钮时,它应该能够像我的悬停选择器一样选择值,并生成表单
简而言之,我想将悬停状态选择器删除为单击按钮选择器。
查看代码以了解更多信息:
<div id="pesa"><p>PERSONAL INFORMATION</p>
<ul>
EMAIL:<li class="editable"><?php echo $email;?></li><input type="button" value="edit here">
NAME:<li class="editable"><?php echo $name;?></li><input type="button" value="edit here">
TELLPHONE:<li class="editable"><?php echo $tel;?></li>
COUNTRY:<li class="editable"><?php echo $country;?></li>
CITY:<li class="editable"><?php echo $city;?></li>
</ul>
</div>
谢谢。很抱歉,我在这里的js 代码标签上遇到了麻烦
$(document).ready(function()
{
var oldText, newText;
$(".editable").hover(
function()
{
$(this).addClass("editHover");
},
function()
{
$(this).removeClass("editHover");
}
);
$(".editable").bind("dblclick", replaceHTML);
$(".btnSave").live("click",
function()
{
newText = $(this).siblings("form")
.children(".editBox")
.val().replace(/"/g, """);
$(this).parent()
.html(newText)
.removeClass("noPad")
.bind("dblclick", replaceHTML);
}
);
$(".btnDiscard").live("click",
function()
{
$(this).parent()
.html(oldText)
.removeClass("noPad")
.bind("dblclick", replaceHTML);
}
);
function replaceHTML()
{
oldText = $(this).html()
.replace(/"/g, """);
$(this).addClass("noPad")
.html("")
.html("<form><input type="text" class="editBox" value="" + oldText + "" /> </form><a href="#" class="btnSave">Save changes</a> <a href="#" class="btnDiscard">Discard changes</a>")
.unbind('dblclick', replaceHTML);
}
}
);
和css
#pesa a{
color: #000;
}
#pesa a:hover{
color: #;
}
#pesa a:hover{
text-decoration: none;
}
h1{
font-size: 30px;
padding: 0;
margin: 0;
}
h2{
font-size: 20px;
}
.editHover{
background-color: #E8F3FF;
}
.editBox{
width: 326px;
min-height: 20px;
padding: 10px 15px;
background-color: #fff;
border: 2px solid #E8F3FF;
}
#pesa ul{
list-style: none;
}
#pesa li{
width: 330px;
min-height: 20px;
padding: 10px 15px;
margin: 5px;
}
li.noPad{
padding: 0;
width: 360px;
}
#pesa form{
width: 100%;
}
.btnSave, .btnCancel{
padding: 6px 30px 6px 75px;
}
.block{
float: left;
margin: 20px 0;
}
function replaceHTML()
{
$(this).removeClass('editHover');
}
或者,如果使用相同的方法添加和删除内联编辑器,请使用toggleClass()
。
编辑
因此,我在评论中说,我更改了DOM和其他内容。给的课太差了,我想:)
HTML:
<div id="pesa"><p>PERSONAL INFORMATION</p>
<div class="ul">
<div>
EMAIL:<div class="li editable">test</div>
<input type="button" value="edit here" class="jim"><br>
</div>
<div>
NAME:<div class="li editable">name</div>
<input type="button" value="edit here" class="jim">
</div>
<div>
TELLPHONE:<div class="li editable">000000000</div>
</div>
<div>
COUNTRY:<div class="li editable">Tazmania</div>
</div>
<div>
CITY:<div class="li editable">Fouilly les oies</div>
</div>
</div>
</div>
JS:
$(document).ready(function(){
$(".editable").hover(
function()
{
if(!$(this).hasClass("noPad")){
$(this).addClass("editHover");
}
},
function()
{
$(this).removeClass("editHover");
}
);
$(".editable").bind("dblclick", function(){
replaceHTML(this);
});
$(".jim").bind("click", function(){
replaceHTML($(this).siblings(".li"));
});
$(".btnSave").live("click",
function(){
$(this).parent()
.html($(this).parent().find("form input").val())
.removeClass("noPad");
});
$(".btnDiscard").live("click",
function(){
$(this).parent()
.html( $(this).parent().find("form").data("oldText") )
.removeClass("noPad");
});
function replaceHTML(element){
if( $(element).hasClass("noPad") ){
return
}
var value = $(element).html().replace(/"/g, """);
$(element).addClass("noPad")
.html("<form><input type="text" class="editBox" value="" + value + "" /> </form><a href="#" class="btnSave">Save changes</a> <a href="#" class="btnDiscard">Discard changes</a>");
$(element).removeClass("editHover");
$(element).find("form").data("oldText", value);
}
});
我希望这个新版本对你有好处
您可以在这里找到新的jsfiddle示例,在这里可以找到以前的