繁体   English   中英

jQuery.text()-如何在不影响任何子元素的情况下更改标记的文本

[英]jQuery.text() - How can I alter text of tag without affecting any sub-elements

我正在编写一个小的jQuery插件以允许进行内联编辑(出于我的目的,我需要一个非常小的轻巧的自定义插件)。 一切工作都很好,除了当我用新值更新原始标签时,它删除了用于引发编辑的编辑图像,因此不允许进行进一步的编辑。

我尝试执行以下操作,用替换了编辑图像,但是编辑图像不再具有与其关联的click处理程序。

HTML看起来像这样

<h2 class="inlineEdit">Thing to edit<a href='' class='pencil_edit_image'></a></h2>

javascript看起来像:

var editThis = $(".inlineEdit");

var existinglink = editThis.find(".pencil_edit_image");
editThis.text($(this).val());
editThis.append(existinglink);

我怎样才能最好地做到这一点?

在更换之前,您是否尝试过拆开它?

var existinglink = editThis.find(".pencil_edit_image");
existingLink.detach();
editThis.text($(this).val());
editThis.append(existinglink);

jQuery不支持文本节点,因此最简单的方法是将文本放在一个元素中,以便您可以轻松访问它:

<h2 class="inlineEdit"><span class="editable">Thing to edit></span><a href='' class='pencil_edit_image'></a></h2>

 $(".inlineEdit .editable").text($(this).val());

要访问文本节点而不添加额外的元素,可以使用DOM元素:

 $(".inlineEdit")[0].firstChild.innerHTML = $(this).val();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM