2013-06-03 190 views
1

我遇到了一個問題,如下所示:幫助JavaScript if語句

我有一段JavaScript,阻止難看的鏈接標題彈出在我的網站上。

window.onload = function() { 
    var links = document.getElementsByTagName("a"); 
    for (var i = 0; i < links.length; i++) { 
     var link = links[i]; 
     link.onmouseover = function() { 
      this.setAttribute("org_title", this.title); 
      this.title = ""; 
     }; 
     link.onmouseout = function() { 
      this.title = this.getAttribute("org_title"); 
     }; 
    }; 
}; 

這適用於我所需要的。

但是,現在我想使用Swipebox插件,它使用「標題」字段作爲標題。由於在鼠標懸停時標題被刪除,它顯示爲我點擊的圖庫中沒有圖片的標題(圖庫中的其他人仍然顯示他們的標題)。

我想要做的是,對於我上面的JavaScript,針對所有沒有類「swipebox」的所有「a」元素。

任何幫助,將不勝感激。

+1

'var links = document.querySelectorAll(「a:not(.swipebox)」);' – Ian

+0

最酷,但IE8不支持。 – raina77ow

+0

@ raina77ow'querySelectorAll'得到了IE8的大量支持。它在早期版本中不受支持。除非你的意思是':not()'選擇器? – Ian

回答

1

你可以這樣做:

window.onload = function() { 
    var links = document.getElementsByTagName("a"); 
    for (var i = 0; i < links.length; i++) { 
     var link = links[i]; 
     if(link.getAttribute("class").indexOf("swipebox") == -1) { 
      link.onmouseover = function() { 
       this.setAttribute("org_title", this.title); 
       this.title = ""; 
      }; 
      link.onmouseout = function() { 
       this.title = this.getAttribute("org_title"); 
      }; 
     } 
    }; 
}; 

編輯:爲PlantTheIdea說,在這種情況下使用getAttribute()更有意義......

+1

,這將無法工作。這很好,非常感謝。我對於在現有代碼中如何放置if語句感到困惑,並且這解決了它! – user2124044

+1

爲什麼'outerHTML'(不是 - 好,不是,但仍然 - 非常跨平臺,afair)在這裏用來代替'className'? – raina77ow

+1

@ raina77ow更不用說如果標籤內的** anything **包含文本「swipebox」,這意味着屬性,屬性值或內部文本,這將匹配。有這樣一個更容易,更好的支持,一致的方式 – Ian

3

像這樣的東西應該工作,如果包含在你的循環:

if(link.className.indexOf('swipebox') === -1){ 
    // do your magic 
} 

這將檢查,看看是否存在元素的類(ES)swipebox,只有做好魔法,如果不存在的話。

編輯

通過@ raina77ow大推薦!

if(!(/\bswipebox\b/.test(link.className))){ 
    // do your magic 
} 

RegEx測試,以確保swipebox不存在任何形式的類名。這應該很好地覆蓋你的所有基地。

+3

難道你不喜歡當一些人在頁面上低估每個人,然後沒有理由爲什麼?我喜歡一個好的謎。 – PlantTheIdea

+1

我認爲所有這些答案都不值得讚揚,所以我照顧了這個; D – howderek

+2

你是一個學者和先生,先生。 – PlantTheIdea

0

您可以使用下面的代碼除外:

if (link.className == null || link.className != "swipebox") { 
    [...your two onmouseover/onmouseout functions...] 
} 
+0

如果有多個類,比如'class =「swipebox something-else」' – Ian