Javascript .replace()用新的DOM元素替换任意文本
我在一个div中有一块未标记的文本。我想解析文本并用包含处理程序的新表单元素替换某些关键字。一个例子是,当我看到文本“Date:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”时,我想用一个新的输入字段替换它,给它一个唯一的id,然后给它附加一个.datepicker()处理程序 给定示例文本: *知识是一种美德,是一种美德,是一种美德,是一种美德。日期:我们的工作时间是最低限度的,我们的工作时间是从我们的共同合同开始的* 我尝试了以下方法:Javascript .replace()用新的DOM元素替换任意文本,javascript,jquery,dom,Javascript,Jquery,Dom,我在一个div中有一块未标记的文本。我想解析文本并用包含处理程序的新表单元素替换某些关键字。一个例子是,当我看到文本“Date:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”时,我想用一个新的输入字段替换它,给它一个唯一的id,然后给它附加一个.datepicker()处理程序 给定示例文本: *知识是一种美德,是一种美德,是一种美德,是一种美德。日期:我们的工作时间是最低限度的,我们的工作时间是从我们的共同合同开始的* 我尝试了以下方法: $("#textdiv"
$("#textdiv").replace(/Date:________/g, "<input type='text' id='textid_123'/>");
$("#textid_123").datepicker();
$(“#textdiv”)。替换(/Date:uuuuuuuuuuuuuuuuuuug,”);
$(“#textid_123”).datepicker();
在创建输入框时,它不会附加datepicker()处理程序。这并不让我感到惊讶,我猜JQuery并没有意识到DOM的修改
如果我的“日期”被包装在一个或另一个标签中,这将是微不足道的。有没有办法用JQuery可见的新DOM元素替换纯文本?
未捕获类型错误:$(…)。替换不是函数
您应该替换元素的innerHTML,如下所示:
$("#textdiv").html(
$("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>")
);
console.log( $('#textid_123') ); // yup, it's there, so .datepicker should work
$(“#textdiv”).html(
$(“#textdiv”).html().replace(/Date:uuuuuuuuuuuuug,”)
);
console.log($('#textid_123'));//是的,它就在那里,所以日期选择器应该能用
顺便说一句:您在正则表达式中使用了/g
标志,这意味着您希望替换多个Date:\uuuuuuuuu
实例。在这种情况下,您不应该在新的输入元素上使用硬编码的id
,因为id必须是唯一的
未捕获类型错误:$(…)。替换不是一个函数
您应该替换元素的innerHTML,如下所示:
$("#textdiv").html(
$("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>")
);
console.log( $('#textid_123') ); // yup, it's there, so .datepicker should work
$(“#textdiv”).html(
$(“#textdiv”).html().replace(/Date:uuuuuuuuuuuuug,”)
);
console.log($('#textid_123'));//是的,它就在那里,所以日期选择器应该能用
顺便说一句:您在正则表达式中使用了/g
标志,这意味着您希望替换多个Date:\uuuuuuuuu
实例。在这种情况下,您不应该在新的输入元素上使用硬编码的id
,因为id必须是唯一的
问题不在于jQuery没有获取内容更改,因为内容在调用
.datepicker
之前就已经更改了。问题是.replace()
不是有效的jQuery方法。而是像这样替换HTML内容:
var content = $("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>");
$("#textdiv").html(content);
var content=$(“#textdiv”).html().replace(/Date:uuuuuuuug,”);
$(“#textdiv”).html(内容);
然后可以调用其他方法 问题不在于jQuery没有获取内容更改,因为内容是在调用
.datepicker
之前更改的。问题是.replace()
不是有效的jQuery方法。而是像这样替换HTML内容:
var content = $("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>");
$("#textdiv").html(content);
var content=$(“#textdiv”).html().replace(/Date:uuuuuuuug,”);
$(“#textdiv”).html(内容);
然后可以调用其他方法 请看,那里的共识是“不,他们不应该”!这段代码真的创建了一个输入框吗?jQuery对象没有
replace
方法,因此我无法理解您的代码是如何不产生错误的。您使用的库是否提供了replace
方法?请参阅,其中的共识是“不,他们不应该”!这段代码真的创建了一个输入框吗?jQuery对象没有replace
方法,因此我无法理解您的代码是如何不产生错误的。您使用的库是否提供了replace
方法?