$(“article”).filter*(while).each(repeat_me) - 过滤器匹配时循环

$("article").filter*(while).each(repeat_me) - loop while filter matches

提问人:mario 提问时间:8/25/2010 更新时间:8/25/2010 访问量:249

问:

只要自定义过滤器函数匹配,我就希望重复调用自定义函数。

用例:

// filter
function overflow() { 
    return this.clientHeight < this.scrollHeight;
}

// apply
$("article").filter(overflow).css_calc({fontSize: -1});

只要过滤器匹配,jQuery中是否有一种通用方法可以调用后续函数?还是没有可以多次调用前面函数的东西?有什么方法可以在jQuery函数链中循环吗?

或者其他方式;你会如何写出一个组合,它执行通常的 .each() 但只要所述 .filter() 匹配,也会在每个元素上执行 while()。.each_while()

jQuery查询

评论


答:

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语义中,并正在寻找一个精心设计的高级解决方案。