Javascript 聆听外部应用程序使用jQuery对元素所做的样式更改
我的网页中有一个表单,它将信息提交给外部应用程序,并根据响应将元素的样式从“显示:无”更改为“显示:块” 我希望在做出更改后能够运行一个函数,因为这表明操作成功Javascript 聆听外部应用程序使用jQuery对元素所做的样式更改,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我的网页中有一个表单,它将信息提交给外部应用程序,并根据响应将元素的样式从“显示:无”更改为“显示:块” 我希望在做出更改后能够运行一个函数,因为这表明操作成功 你会怎么做这样的事?这里有一个快速而肮脏的方法: var onElementStyleChange = (function() { var elements = [], started = false; return function(element, callback) { elements.unshift
你会怎么做这样的事?这里有一个快速而肮脏的方法:
var onElementStyleChange = (function() {
var elements = [],
started = false;
return function(element, callback) {
elements.unshift({element: element, callback: callback});
if (!started) {
window.setTimeout(function checkElements() {
for (var i = elements.length - 1; i >= 0; i--) {
var element = elements[i].element,
callback = elements[i].callback;
if (element.style.display === 'block') {
callback();
elements.splice(i,1);
}
}
if (elements.length) {
window.setTimeout(checkElements, 0);
} else {
started = false;
}
},0);
started = true;
}
}
}());
然后您可以将其称为do have it check your element:
onElementStyleChange(element, function() {
//do stuff..
});
说明:onElementStyleChange
反复检查元素,直到元素的display
style属性为block
时才停止检查。一旦它看到您的元素具有display:block
,它将调用您传递给它的任何函数并停止检查
编辑:进行更新,使任意数量的元素都可以使用此功能。如果您有250个元素要查看,该怎么办?您将设置250个设置超时?@XGreen它既快又脏,但是,再次强调,观察
style
属性来触发函数也不是一种很好的方法。它不是内存密集型的。你的方法没有得到任何优化。当你完成时,你甚至没有清除超时。正如我在现实世界中提到的,他们最终只会吃备忘录。