我有<div id="namingSchemes" contenteditable="true"></div>
在这个div上我有事件:
$('#namingSchemes').bind("DOMSubtreeModified", changeSchemaName);
function changeSchemaName(s) {
s.currentTarget.innerHTML = "<span>" + s.currentTarget.innerHTML + "</span>";
}
当我尝试更改innerHTML时出现我的问题。它将再次触发我的changeSchemaName,并且我有不定式循环。
我需要的是可编辑的DIV,当此DIV中的文本被更改时,我将进行一些其他调整,例如将此文本包装到SPAN。
Example - 在这里我添加unbind以防止不定式循环,但第二次当我尝试更改值时,我的事件changeSchemaName未被触发。
感谢您的帮助。
答案 0 :(得分:0)
看起来您在值周围添加了<span>
,所以为什么不忽略更改,如果它已经以<span>
开头,就像这样:
function changeSchemaName(s) {
if (s.currentTarget.innerHTML.indexOf("<span>") < 0 {
s.currentTarget.innerHTML = "<span>" + s.currentTarget.innerHTML + "</span>";
}
}
这样一来,如果已经定义了span
,你就不会继续设置它。
或者你可以使用unbind
删除绑定,而你的功能是这样的:
function changeSchemaName(s) {
$('#namingSchemes').unbind("DOMSubtreeModified", changeSchemaName);
s.currentTarget.innerHTML = "<span>" + s.currentTarget.innerHTML + "</span>";
$('#namingSchemes').bind("DOMSubtreeModified", changeSchemaName);
}