在span标签上使用on函数

时间:2015-05-31 07:56:28

标签: javascript jquery html

我正在尝试使用on函数在span和输入文本字段之间切换,但我需要一些帮助来找出我做错了什么。

我为它创造了一个小提琴here

UI

<div>
<span >My value here!</span>
</div>

JS

var focusInName = '';
var focusOutName = '';
$(function () {
    $("document").on("click",".span", function () {
        var input = $('<input />', {'type': 'text', 'name': 'aname', 'value': $(this).html()});
        $(this).parent().append(input);
        $(this).remove();
        input.focus();
        focusInName = $(this).html();
        alert(focusInName);
    });

    $('document').on('blur',".input", function () {
        $(this).parent().append($('<span />').html($(this).val()));
        $(this).remove();
         focusOutName = $(this).val();
        alert(focusOutName);
    });
});

2 个答案:

答案 0 :(得分:2)

您应该将jquery的版本更改为1.9 并将类更改为html元素,如下所示:

 $(document).on("click","span", function () {
//codes
}

输入字段也一样:

$(document).on('blur',"input", function () {
//codes    
 }

修改

如果要将类设置为html元素,可以执行以下操作:

var focusInName = '';
var focusOutName = '';
$(function () {
    $(document).on("click",".sp", function () {
        var input = $('<input class="box" />', {'type': 'text', 'name': 'aname','value': $(this).html()});
        $(this).parent().append(input);
        $(this).remove();
        input.focus();
        focusInName = $(this).html();
        alert(focusInName);
    });

    $(document).on('blur',".box", function () {
        $(this).parent().append($('<span class="sp" />').html($(this).val()));
        $(this).remove();
         focusOutName = $(this).val();
        alert(focusOutName);
    });
});

DEMO

答案 1 :(得分:1)

我建议你使用简单的contenteditable

 <span contentEditable="true">My value here!</span>

你需要使用jQuery 1.7+作为$.fn.on(),因为它是在1.7

中添加的

HTML ,最初为您的元素添加所需的类,即span

<span class='span'>My value here!</span>

代码

var focusInName = '';
var focusOutName = '';
$(function () {
    $(document).on("click", ".span", function () {
        focusInName = $(this).html();
        var input = $('<input />', {
            'type': 'text',
                'name': 'aname',
                'value': $(this).html(),
                'class': 'input' //Add the CSS class while creating element
        });
        input.focus();
        $(this).parent().append(input);
        $(this).remove(); //Always remove at the end
        alert(focusInName);
    });

    $(document).on('blur', ".input", function () {
        focusOutName = $(this).val();
        var span = $(
            '<span />', {
            'class': 'span', //Add the CSS class while creating element
            'html': $(this).val()
        });

        $(this).parent().append(span);
        $(this).remove();  //Always remove at the end      
        alert(focusOutName);
    });
});

修改后的Fiddle