如何转换jQuery过滤器以与waitForKeyElements一起使用?

时间:2015-08-18 01:56:16

标签: javascript jquery greasemonkey tampermonkey

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

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

1 个答案:

答案 0 :(得分:1)

将静态jQuery过滤器转换为支持AJAX的waitForKeyElements()使用并不太难:

  1. 您的基本选择器才会成为选择器参数。 EG:
    waitForKeyElements (".js-stream-item:has(span.ProfileTweet-action--retweet)"...

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

  3. 请注意,使用parseInt()时,you should always specify the base可以避免意外(&#34;定时炸弹&#34;)行为。

    这是一个 完整脚本 ,将该过滤器的端口显示为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 ();
    }