2010-04-22 40 views
4

HTML卸下/解除綁定懸停

<a href="home.html">Home</a> 

CSS

a { 
    color: blue; 
} 
a:hover { 
    color: red; 
} 

現在你可以看到<a>現在是懸停紅色。

問題
如何通過jQuery刪除懸停?
我曾嘗試: $('a').unbind('hover');$('a').unbind('mouseenter mouseleave')

我來想想爲什麼它不會工作,這是不是hover()

回答

4

由於a:hover沒有錨標記綁定事件,只是一個僞類您將不會取消綁定.hover()事件。

如果你想改變的行爲,你可以做兩件事

  1. 刪除錨標記上的a:hover風格

  2. 綁定懸停事件,並設置相應的CSS。

2

不。這是一個CSS規則,不是JavaScript事件。
改變顏色最簡單的方法是通過更強的CSS規則,例如:

a.NoHover:hover { 
    color: blue; 
} 

body a:hover { 
    color: blue; 
} 
1

您可以添加/刪除類並使用JQuery進行相應的操作。所以你應該爲普通和懸停狀態創建類。例如,你可以這樣從元素中刪除樣式:

$('a').mouseover(function(){ 
    $(this).removeClass(); 
}); 

不過,我會建議你實際上添加和刪除類相應的使用:


removeClass()

+0

我不認爲這會起作用,因爲它不是作爲類添加的。 – rahul 2010-04-22 06:45:42

+0

'removeClass'不會改變顏色,但會刪除所有類,並可能對頁面設計造成嚴重破壞。 – Kobi 2010-04-22 06:48:57

+0

@Kobi:其實我要求他爲正常和懸停狀態添加班級作爲替代。 – Sarfraz 2010-04-22 06:56:57

0

如果其只有你關心這種顏色可能會有所幫助。

$('a').each(function() { 
    var $this = $(this); 
    $this.css('color', $this.css('color')); 
}); 

元素的style屬性將覆蓋任何CSS選擇器中設置的屬性。理論has been tested和工作正常。這個插件會讀取任意的css屬性,並將它們設置爲「粘貼」它們。

$.fn.stickCss = function(props) { 
    var stick = (props || '').split(/\s+/); 
    return this.each(function() { 
    var $this = $(this); 
    $.each(stick, function(i, prop) { 
     $this.css(prop, $this.css(prop)); 
    }); 
    }); 
}; 

// example usage: 
$('a').stickCss('color background-color margin padding');