jQuery获取所选范围之前和之后所有范围的内容

时间:2011-08-10 20:20:20

标签: jquery

我写了这段代码: HTML

<p>
    Once upon a time there was a man
    who lived in a pizza parlor. This
    man just loved pizza and ate it all
    the time.  He went on to be the
    happiest man in the world.  The end.
</p>

JS:

var words = $("p:first").text().split(" ");
var text = words.join("</span> <span>");
$("p:first").html("<span>" + text + "</span>");
$("span").click(function() {
    $(this).html('<input value="'+$(this).text() +'"/>');
    $(this).unbind("click");
});

现在我希望当用户点击输入框打开的单词时,我希望当输入框中的用户blurs时,它应该相应地更改p中的单词。

问题

如何在显示输入框的文本之前和之后获取所有文本? 然后重置p

的值

2 个答案:

答案 0 :(得分:1)

刚刚将其更改为:

var words = $("p:first").text().split(" ");
var text = words.join("</span> <span>");
$("p:first").html("<span>" + text + "</span>");
$("span").click(function() {
    $(this).html('<input class="mm" value="' + $(this).text() + '"/>');
    $(this).unbind("click");
});
$("#hmm").delegate(".mm", "blur", function() {
    $(this).replaceWith("<span>"+$(this).val()+"</span>");
    $(this).bind("click");
});

它就像魅力一样

答案 1 :(得分:0)

我对'模糊'事件有一些奇怪的行为,所以我稍微修改了你的简介,试试这个 - 希望它仍能给你你想要的效果 -

var words = $("p:first").text().split(" ");
var text = words.join("</span> <span>");
$("p:first").html("<span>" + text + "</span>");
$("span").click(function() {
    $("span input[class=tb]").each(function(
           {$(this).parent('span').html($(this).val())
    });
    $(this).html('<input class="tb" value="'+$(this).text() +'"/>');
    $(this).unbind("click");
});

http://jsfiddle.net/ipr101/Sx85y/