2014-01-29 40 views
1

用下面給出的Tampermonkey腳本的代碼,我確信如果返回值是-1(因爲它將默認爲,下面的示例選擇),那麼應該沒有Qtip。
但是,此代碼仍會在元素上創建Qtips,否則將以-1的文本值進行默認設置。有人能解釋爲什麼會發生這種情況嗎?Qtip仍然在製作中,即使我不問它是什麼?

// 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); 
     }  
    }); 
}); 

例正確選擇(這是應該給我一個球員的名字和所做的):應處理爲-1,然後是不是一個選擇的

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

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

例創建爲工具提示,但不是。

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

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

注意,我已經分別刪除了一些在兩個<a><img>標籤內嵌標籤。我不認爲這應該扮演任何角色,因爲$(string).text()應該完全移除標籤,但如果有必要,我可以再次添加標籤。

謝謝!

回答

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); 
    } 
}); 
+0

謝謝布洛克。你能否澄清一些事情?由於性能或簡單風格(或兩者兼而有之)過濾調用循環會更好嗎?爲什麼'if'語句使用'this'而不是'$(this)'?另外,出於好奇,你知道我爲什麼在qtip中看到'-1'嗎?謝謝! – Vasu

+0

兩者。另外,對於其他人(或者你自己,從知道起六個月),他們會更容易弄清楚他們的意圖是什麼。 ...這是表演。在這種情況下,你用'$(this)'得不到任何東西。 ...你也不應該像這樣重複'$(this)'。將其設置爲一個變量並使用它。 ...在Qtip中,你應該看到一個-1,但是它後面應該有HTML,不一定是可見的。這不是'== -1',所以你不能在'if()'檢查中使用它。 –

+0

明白了,謝謝。 – Vasu

相關問題