jQuery内联编辑选择器



我在客户端有一个功能性的内联编辑脚本,但我想添加一个像<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, "&quot;");
                    $(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, "&quot;");
                    $(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, "&quot;");
    $(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示例,在这里可以找到以前的

最新更新