2010-05-04 64 views
0

這是我的代碼。當你看到「警報([...])」時,彈出警報。爲什麼CSS樣式沒有改變? '點擊'事件並不是也不是!jQuery:選擇後無法更改元素樣式

resolveSideMenuAddress: function() { 
    var firstLink = $("#masterHeaderMenu .masterHeaderMenuButton a:first"); 

    function select(link) { 
     alert('i alert'); 
     link.css({ 
      'color': '#9a4d9e', 
      'cursor': 'default' 
     }); 
     alert('color and cursor not changed'); 
     link.click(function() { 
      alert('click'); 
      return false; 
     }); 
    } 

    if (window.location.pathname === firstLink.attr('href')) { 
     alert('i alert'); 
     select(firstLink); 
    } 
} 

我試過addClass()並且不能改變鏈接的顏色。

+1

你應該接受一些回答其他問題,以鼓勵人們把精力投入到響應。 – 2010-05-04 01:43:36

+0

您有兩次相同的警報 - 您是否看到它彈出兩次? – 2010-05-04 01:43:49

+0

是的,我是。很好的問題。我很抱歉成爲jQuery newb。 – JamesBrownIsDead 2010-05-04 01:46:43

回答

0

首先,您並未實際觸發click事件,而是將單擊處理程序應用於鏈接。在你實際點擊鏈接之前它不會被觸發。如果你想要運行現有的點擊處理程序,你可以試試link.click()(沒有這個功能)。如果你想要鏈接被實際採用,你應該簡單地將該位置設置爲鏈接的href屬性的值。其次,我不確定爲什麼CSS沒有正確應用。它對我來說很好。我建議使用Firefox/Firebug並在函數運行後檢查元素以查看實際使用的樣式。

+0

我認爲他知道這一點,並說問題在於即使點擊鏈接也不會觸發事件。 – GerManson 2010-05-04 05:29:42

0

嘗試使用$(鏈接),而不是隻是鏈接 這樣的:

resolveSideMenuAddress: function() { 
    var firstLink = $("#masterHeaderMenu .masterHeaderMenuButton a:first"); 

    function select(link) { 
     alert('i alert'); 
     $(link).css({ 
      'color': '#9a4d9e', 
      'cursor': 'default' 
     }); 
     alert('color and cursor not changed'); 
     $(link).click(function() { 
      alert('click'); 
      return false; 
     }); 
    } 

    if (window.location.pathname === firstLink.attr('href')) { 
     alert('i alert'); 
     select(firstLink); 
    } 
}