如何转换jQueryfilter以与waitForKeyElements一起使用?

此代码删除少于3转推的推文,但现在我有刷新(AJAX)问题。 如何添加waitForKeyElements函数来修复它?

 $('.js-stream-item:has(span.ProfileTweet-action--retweet)').filter(function() { return parseInt($(this).find('span.ProfileTweet-actionCount').attr('data-tweet-stat-count')) < 3; }).remove(); 

要将静态jQueryfilter转换为支持AJAX的waitForKeyElements()使用起来并不太难:

  1. 您的基本选择器只是选择器参数。 例如:
    waitForKeyElements (".js-stream-item:has(span.ProfileTweet-action--retweet)"...

  2. filter(function()内部传递到waitForKeyElements回调几乎是原样。请参阅下面的脚本。

请注意,使用parseInt() , 应始终指定基数以避免意外(“定时炸弹”)行为。

这是一个完整的脚本,显示该filter的端口,以waitForKeyElements

 // ==UserScript== // @name _Remove or hide nodes based on jQuery filter // @include http://YOUR_SERVER.COM/YOUR_PATH/* // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // @require https://gist.github.com/raw/2625891/waitForKeyElements.js // @grant GM_addStyle // ==/UserScript== /*- The @grant directive is needed to work around a design change introduced in GM 1.0. It restores the sandbox. */ waitForKeyElements ( ".js-stream-item:has(span.ProfileTweet-action--retweet)", removeFilteredNode ); function removeFilteredNode (jNode) { var twtCnt = parseInt ( jNode.find ('span.ProfileTweet-actionCount').attr ('data-tweet-stat-count') , 10 ) if (twtCnt < 3) jNode.remove (); }