需要关于函数的帮助 [英] Need help about a function

查看:121
本文介绍了需要关于函数的帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Javascript和jQuery的新用户。我需要帮助:

I am new at Javascript and jQuery. I need help with something like:

<script type="text/javascript">
    $(window).load(function(){
        $('#createDiv').click(function (){
            $("<div/>").html("<span id='myInstance2' style='display: block;'>New Folder</span>").css("display", "none").appendTo("#results").fadeIn();
        });
    });
</script>

我有这个功能点击并创建一个新的< span> / code>带有文本的标记。你可以看到我有一个ID myInstance2 。所以我想做的是当我点击和跨度创建,我想让这个跨度可现场编辑。像我可以重命名这个新文件夹成任何我想要的。

I have this function to click and create a new <span> tag with a text. You can see I have an ID myInstance2. So what I am trying to do is when I click and the span is created, I would like to make this span live-editable. Like I can rename this "New folder" into whatever I want.

如果任何人都可以帮助,这将是巨大的。提前感谢,对不起我的错误英语:)

If anyone can help it would be great. Thanks in advance and sorry for my bad English :)

推荐答案

如果我抓住我认为你想做的,不太可行的你想象的方式。但是,有技巧。以下是其中之一。想法是在span处插入一个hidden输入,然后在需要时创建显示输入和隐藏span的函数(例如当用户点击span时):

If I catch what I think you're trying to do, it's not quite feasable the way you imagine. However, there are tricks. The following is one of them. The idea is to insert a "hidden" input where the span is, then create functions to show the input and hide span when needed (like when user clicks on span. Something like so:

jsFiddle

<button id="createDiv">Start</button>
<div id="results"></div>



CSS



CSS

#createDiv, #results span { cursor: pointer; }
#results div {
    background: #FFA;
    border: 1px solid;
    margin: 1em;
    padding: 1em 1em 2em;
}
#results input[type=text] {
    border: none;
    display: none;
    outline: none;
}



JavaScript



JavaScript

//  Call for document .onload event
$(function() {
    //  Normal Click event asignement, same as $("#createDiv").click(function
    $("#createDiv").on("click", function(e) {
        //  Simply creating the elements one by one to remove confusion
        var newDiv = $("<div />", { class: "new-folder" }),  //  Notice, each child variable is appended to parent
            newInp = $("<input />", { type: "text", value: "New Folder", class: "title-inp" }).appendTo(newDiv),
            newSpan = $("<span />", { id: "myInstance2", text: "New Folder", class: "title-span" }).appendTo(newDiv);
        //  Everything created and seated, let's append this new div to it's parent
        $("#results").append(newDiv);
    });

    //  the following use the ".delegate" side of .on
    //  This means that ALL future created elements with the same classname, 
    //    inside the same parent will have this same event function added
    $("#results").on("click", ".new-folder .title-span", function(e) {
        //  This hides our span as it was clicked on and shows our trick input, 
        //    also places focus on input
        $(this).hide().prev().show().focus();
    });
    $("#results").on("blur", ".new-folder .title-inp", function(e) {
        //  tells the browser, when user clicks away from input, hide input and show span
        //    also replaces text in span with new text in input
        $(this).hide().next().text($(this).val()).show();
    });
    //  The following sures we get the same functionality from blur on Enter key being pressed
    $("#results").on("keyup", ".new-folder .title-inp", function(e) {
        //  Here we grab the key code for the "Enter" key
        var eKey = e.which || e.keyCode;
        if (eKey == 13) { // if enter key was pressed then hide input, show span, replace text
            $(this).hide().next().text($(this).val()).show();
        }
    });
})

这篇关于需要关于函数的帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆