Qtip仍在制作中,即使我没有要求它?

时间:2014-01-29 06:43:47

标签: javascript jquery qtip tampermonkey

使用下面给出的Tampermonkey脚本代码,我很确定如果返回值是-1(因为它将默认为,如下面的示例选择),那么应该没有Qtip制作。
但是,此代码仍会在元素上创建Qtips,否则这些元素将默认为文本值-1。有人可以解释为什么会这样吗?

// headers that work fine

$( function() {
    GM_addStyle(GM_getResourceText('qtipCSS'));

    var makeConfig = function(jqObject){            
        var playerName = $(jqObject).text() || -1;
        var argumentMsg = '<a href="javascript:openQuickMsgDialog(' + '&quot;' + playerName + '&quot;' + ');" style="font-size:10px; "> [m] </a>'
        var argumentBuff = '<a href="javascript:openWindow(' + '&quot;' + 'index.php?cmd=quickbuff&t=' + playerName + '&quot;' + ', \'fsQuickBuff\', 618, 1000, \',scrollbars\');" style="font-size:10px;"> [b] </a>'

        var finalText = playerName + '<br/>' + '<div style = "text-align: center; color: white !important;">' +  argumentMsg + argumentBuff + '</div>';

        var qtipContent = {
            overwrite: false,
            content: { text: finalText, attr: 'error' },
            position: { my: 'bottom center', at: 'top center' },
            show: { delay: 200 },
            hide: { fixed: true, delay: 200 },
            style: { classes: 'qtip-tipsy qtip-shadow' }
        }
        return qtipContent;
    };

    $('[href *= "index.php?cmd"]').each(function(){     
        var config = makeConfig($(this));
        if (config.content.text == -1)
            return;
        else if (config.content.text != -1){
            $(this).qtip(config);
        }       
    });
});

正确选择的例子(那应该给我一个球员的名字并且确实如此):

$('[href *= "index.php?cmd"]').eq(1)

[
<a href=​"index.php?cmd...">​NameOfPlayer​</a>​
]

应该处理为-1的选择示例,然后不会将其创建为工具提示,但不是。

$('[href *= "index.php?cmd"]').eq(0)

[
<a href=​"index.php?cmd..." data-hasqtip=​"0">​
<img src=​"someplace">​
</a>​
]

注意,我已分别删除了<a><img>标记中的部分内联标记。我不认为这应该扮演任何角色,因为$(string).text()应该完全删除标签,但如果有必要,我可以再次添加标签。

谢谢!

1 个答案:

答案 0 :(得分:1)

finalText逻辑错误,永远不会只返回-1

无论如何,不​​要以这种方式过滤Qtip。在调用循环中做得更好。改变这个:

$('[href *= "index.php?cmd"]').each(function(){     
    var config = makeConfig($(this));
    if (config.content.text == -1)
        return;
    else if (config.content.text != -1){
        $(this).qtip(config);
    }       
});


对此:

$('[href *= "index.php?cmd"]').each(function(){     
    if (this.textContent.trim () ) {
        var config = makeConfig ( $(this) );
        $(this).qtip(config);
    }
});