提问人:mario 提问时间:8/25/2010 更新时间:8/25/2010 访问量:249
$(“article”).filter*(while).each(repeat_me) - 过滤器匹配时循环
$("article").filter*(while).each(repeat_me) - loop while filter matches
问:
只要自定义过滤器函数匹配,我就希望重复调用自定义函数。
用例:
// filter
function overflow() {
return this.clientHeight < this.scrollHeight;
}
// apply
$("article").filter(overflow).css_calc({fontSize: -1});
只要过滤器匹配,jQuery中是否有一种通用方法可以调用后续函数?还是没有可以多次调用前面函数的东西?有什么方法可以在jQuery函数链中循环吗?
或者其他方式;你会如何写出一个组合,它执行通常的 .each() 但只要所述 .filter() 匹配,也会在每个元素上执行 while()。.each_while()
答:
2赞
Anurag
8/25/2010
#1
使用 setInterval
定期调用代码。
function update() {
$("article").filter(overflow).css_calc({fontSize: -1});
}
var timer = setInterval(update, 200); // update every 200ms
要清除更新,请调用
clearInterval(timer);
2赞
Ian Henry
8/25/2010
#2
我可能不完全理解你的问题,但我认为你可以使用简单的命令式编程来满足你想要的:
// filter
function overflow() {
return this.clientHeight < this.scrollHeight;
}
while($("article").filter(overflow).length > 0)
$("article").filter(overflow).css_calc({fontSize: -1});
不过,目前我却忽略了一个更优雅的解决方案。
评论
0赞
mario
8/25/2010
事实上,这确实如此。(哈哈,我太沉浸在jQuery语义中,并正在寻找一个精心设计的高级解决方案。
评论