2011-04-29 69 views
0

我無法實現jQuery .addClass()效果。Jquery addClass問題

我想使用這個腳本是這樣的:

<script> 
    $(function(){ 
     $('#top_right_size_large').click(function(){ 
      $('#primary').addClass('large_content'); 
     }); 
    }); 
    </script> 

我看過的文件,並檢查所有我的parenthesizes,但無論出於何種原因,這並不添加.large_content上課的時候點擊#top_right_size_large錨點。任何想法,爲什麼這不會按我期望的方式工作?

+0

你怎麼知道它不會被添加?你有沒有看DOM?是否存在ID爲'primary'或'top_right_size_large'的元素?你的代碼工作正常:http://jsfiddle.net/fkling/wcTz5/所以我認爲你的HTML不正確或添加類不會直觀地改變任何東西。 – 2011-04-29 07:51:17

+0

是的,他們都存在 - 沒有任何錯別字。我知道它沒有被添加,因爲我正在用螢火蟲看着。另外,沒有任何與該類相關的樣式被應用。 – Thomas 2011-04-29 07:52:20

+1

看我的編輯。你的代碼工作正常:http://jsfiddle.net/fkling/wcTz5/你能提供一個鏈接到頁面?或張貼HTML? – 2011-04-29 07:54:04

回答

0

顯然,在標籤之前添加代碼,腳本不會工作。我將代碼移動到標籤下方,一切正常。感謝所有的建議!

+1

它應該工作,因爲您正在將回調傳遞給'document.ready'事件。即該代碼在加載DOM後運行。或者,也許這不是你有的代碼?在我的jsfiddle例子中,你可以看到代碼被添加到頁面的頭部(即在元素之前)並且它工作。 – 2011-04-29 08:05:51

+0

我沒有使用document.ready - 這就是爲什麼它需要在內容後加載。謝謝你幫我把它沖洗出來。 – Thomas 2011-05-01 09:17:45

+0

那麼,在你的代碼中你呢。 '$(function(){...})'是$(document).ready(function(){...})的快捷方式。但不管怎麼說.... – 2011-05-01 13:44:58

1

只是一個猜測,你的錨固裝置具有href和點擊時,它重新加載頁面,嘗試改變像下面的代碼:

<script> 
    $(function(){ 
     $('#top_right_size_large').click(function(e) { 
      e.preventDefault(); 
      $('#primary').addClass('large_content'); 
     }); 
    }); 
</script> 
+0

這是一個很好的猜測,我總是忘記改變href的東西。 – Thomas 2011-04-29 07:56:30

+0

@Thomas:更好:如果你不使用鏈接作爲鏈接,這意味着它不會引用其他網站,請使用按鈕。 – 2011-04-29 07:57:42

0

包括javascript:void(0);href,以防止任何導航

<a id="op_right_size_large" href="JAVASCRIPT:VOID(0);">..</a>