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

时间:2010-08-24 19:17:31

标签: jquery

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

用例:

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

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

只要 过滤器匹配,jQuery中是否有通用方法来调用后续函数 ?或者有没有什么东西可以多次调用前面的函数? 以任何方式在jQuery函数链中循环?

或其他;你会如何编写类似.each_while()组合的东西来做普通的.each(),但是只要说.filter()匹配,你就会对每个元素执行一个while()。

2 个答案:

答案 0 :(得分:2)

使用setInterval定期定期调用您的代码。

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

var timer = setInterval(update, 200); // update every 200ms

要清除更新,请致电

clearInterval(timer);

答案 1 :(得分:2)

我可能不完全理解您的问题,但我认为您可以使用简单的命令式编程来实现:

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

while($("article").filter(overflow).length > 0)
    $("article").filter(overflow).css_calc({fontSize: -1});

尽管如此,一个更优雅的解决方案让我无法逃脱。