如何在不破坏任何事件的情况下使用jQuery(或纯JS)替换文本
How to replace text using jQuery (or plain JS) without breaking any events?
我为下面这个问题纠结了很长时间(看起来很简单)。我想在不破坏任何事件的情况下改变双花括号之间的单词。
困难在于我不知道设定了什么事件。所以span
上的background-color
只是一个例子,但可以是任何东西。
<div class="test">foo <span>bar</span> {{ baz }}</div>
这是我的JS:
$("span").
css('background-color', 'red').
click(function(){
alert('Clicked bar!');
});
$( ".test" ).
contents().
each(function(){
if( $(this).text().indexOf('{{') !== -1 )
{
$(this).
text().
replace(/{{'s?([^}]*)'s?}}/, "HOW DO I CHANGE {{ baz }} FOR SOMETHING ELSE WITHOUT BREAKING THE EVENT? THIS DOESN'T WORK");
}
});
像下面的例子那样做是行不通的,因为它破坏了span
上的动作。
$('.test').
html(
$('.test').
html().
replace(/{{'s?([^}]*)'s?}}/, 'baq')
);
为了保留这些元素,您只需要替换元素中的文本。您可以创建一个函数,该函数循环遍历元素中的节点并替换文本节点中的文本,并使用任何元素调用自己。这样,您就可以替换您想要保留的元素周围的文本,甚至这些元素中的文本:
$("span").
css('background-color', 'red').
click(function(){
alert('Clicked bar!');
});
function replace(el) {
var c = el.childNodes;
for (var i = 0; i < c.length; i++) {
if (c[i].nodeType == 3) {
c[i].textContent = c[i].textContent.replace(/{{'s?([^}]*)'s?}}/, "Something else");
} else {
replace(c[i]);
}
}
}
replace($('.test')[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test">foo {{ baz }} bar <span>bar {{ baz }} foo</span> foo {{ baz }} foo</div>
你可以做的是:
<div class="test">foo <span class="bar">bar</span> {{ baz }}</div>
jQuery $("span").css('background-color', 'red')
$(".test")
.on("click", "span", function(){
alert('Clicked bar!');
});
$('.test')
.html(
$('.test')
.html()
.replace(/{{'s?([^}]*)'s?}}/, 'baq')
);
但是,您最好使用baz的特定元素span.baz
?
相关文章:
- 是否可以使用jquery或javascript将自动增量类添加到列表中
- 在javascript中完成jQuery或对象
- 如何使用jquery或javascript在image src中添加域url
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 如何通过JavaScript/jQuery(或PHP)检测iPhone 6和6 Plus
- 如何在angularJS或JQuery或JavaScript中保持控件
- 使用JQuery或Javascript编辑HTML注释文本
- 使用jquery或javascript延迟无限滚动
- 如何使用JavaScript或jQuery将纯文本网站捕获到变量中
- jQuery DataTables:纯数组或Object
- 如何在jQuery或纯javascript中添加额外的事件处理程序
- Jquery(或纯js)将更改事件绑定到数组中对象的属性
- 使用jQuery或纯JavaScript淡出和淡出
- 如何在不破坏任何事件的情况下使用jQuery(或纯JS)替换文本
- 使用jQuery或纯Javascript显示带有换行符的Wordpress短代码
- 有没有一个jQuery或纯javascript插件主要使用XHR上传进度反馈,并将flash作为替代
- Javascript幻灯片形式Jquery、Prototype或纯Javascript
- 使用jquery或纯Javascript从字符串中删除公共字符串
- 如何用jquery或纯javascript更改/替换flash对象