javascript - 将字符串替换为 DOM 元素

标签 javascript html

我有一个字符串,我想用 DOM 元素替换其中的某些部分:

var mainStr = 'akedf abc dde';

var span = document.createElement('span');
span.id = 'word';
span.innerHTML = '123';
$(span).click(this.touchHandler);

var n = mainStr.replace('abc',span.innerHTML);

var htmlObject = document.createElement('div');
htmlObject.innerHTML = n;


touchHandler:function(e){
    console.log('log something')
},

此代码不起作用,“abc”字符串被替换为“123”,但 touchHandler 不起作用。

代码位于 Backbone.js

有什么办法可以做到这一点吗?

最佳答案

不是这样的。将 Span 插入文档的方式 (var n = ...) 将 Span 视为哑 HTML,并将其留给浏览器来实际创建元素并将其插入 DOM 中;您自己的 span 元素未插入,因此点击处理程序不起作用。

您可以通过这种方式将处理程序附加到实际元素:

var mainStr = 'akedf abc dde';

var span = document.createElement('span');
span.id = 'word';
span.innerHTML = '123';

var n = mainStr.replace('abc',span.innerHTML);

var htmlObject = document.createElement('div');
htmlObject.innerHTML = n; // the browser creates new span element
$(htmlObject).find("span").click(this.touchHandler); // click handler attached

关于javascript - 将字符串替换为 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177222/

相关文章:

javascript - 是否有水平滚动的无限内容滚动?

javascript - 当信息由 javascript 动态创建时,如何从网页上的表格中抓取信息?

javascript - 单击时突出显示 slickgrid 行

javascript - 如何预加载图像,在继续之前强制加载图像(html/javascript)?

html - iOS Safari <button disabled></button> 不禁用?

javascript - 如何在点击时滚动到下一个div

javascript - 如何在悬停时屏蔽图像?

html - Internet Explorer 9 和 10 的 CSS 问题

html - TYPO3 从 v4 升级到 v7 后的打字规则问题

html - Avada wordpress 主题 div 之间令人讨厌的 5px 空白;边距顶部 : -5px works but padding-top: -5px doesnt work