对动态插入的文本字符串启动jQuery
Fire jQuery on dynamically inserted textstring
我试图删除一个文本字符串并将其绑定到click
事件,但我无法解决这个问题。我想删除em
元素中的所有非数字字符:
<div class="cart">
<dl>
<dt>
<span class="cartspan">
<em class="minicart"></em>
<em id="headercartqty">8 items</em>
</span>
</dt>
</dl>
</div>
我使用这个脚本在页面加载时删除它:
$('em#headercartqty').text(function(_,xText){
return xText.replace(/[^'d]/g, '');
})
我的问题是,当我用类.actionbutton
点击一个按钮时,它会动态更新字符串,然后再次显示单词items。
如何将脚本绑定到按钮?我知道我应该以某种方式使用.on
?这就是我目前所掌握的:
$(document).ready(function () {
$(document).on('click', ".actionbutton", function () {
$('em#headercartqty').text(function(_, xText){
return xText.replace(/[^'d]/g, '');
})
});
});
DOMSubtreeModified
将检测到内容的更改,然后您可以进行更改:-
$('em#headercartqty').bind("DOMSubtreeModified",function(){
$(this).text(function(_, xText){
return xText.replace(/[^'d]/g, '');
})
});
更新
正如@abl在以下评论中建议的那样:-
小心处理此事件很容易导致无限循环如果您决定更改事件处理程序中的DOM。
也许可以试试:-
function updateQuantity(){
$(this).text(function(_, xText){
return xText.replace(/[^'d]/g, '');
})
$('em#headercartqty').one("DOMSubtreeModified", updateQuantity);
}
$('em#headercartqty').one("DOMSubtreeModified", updateQuantity);
或
$('em#headercartqty').bind("DOMSubtreeModified",function(){
if(/[^'d]/g.test($(this).text())){
$(this).text(function(_, xText){
return xText.replace(/[^'d]/g, '');
})
}
});
尽管第一次更新调用该函数两次,而第二次调用它三次。
您当前的$(document).on('click', ".actionbutton", function ()
似乎工作正常,所以我想问题是:工作太早
换句话说,当单击.actionbutton
时,两个事件(更新内容的原始事件和您的事件)将被触发,然后您的事件在另一个事件之前完成工作。
因此,您可以尝试使用setTimeout
来创建自己的事件以延迟其工作,如下所示:
$(document).ready(function () {
$(document).on('click', ".actionbutton", function () {
setTimeout(function() {
$('em#headercartqty').text(function(_, xText){
return xText.replace(/[^'d]/g, '');
});
},
100); // <-- make different tries to adjust delay to the minimum
});
});
$(function(){
$('.actionbutton').on('click',function(e){
e.preventDefault();
var el= $('em#headercartqty');
el.text(el.text().replace(/[^'d]/g, ''));
});
})
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- 我的jQuery插件参数没有正确启动,遇到了问题
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 从控制器返回后Ajax启动事件激发
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- Meteor上的启动页面
- 如何将字符串值从php页面发送到java脚本页面
- 如何防止网页加载后自动启动功能
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- Javascript窗口.open中的UTF8字符串将被UIWebview's应该启动LoadWithReque
- 对动态插入的文本字符串启动jQuery
- 在不刷新页面的情况下使用新字符串参数启动javascript
- 拆分字符串以启动 JavaScript 数组有什么优点