2011-07-09 65 views

回答

1

不要重複這麼多的代碼,試試這個,並通過線及其工作

嘗試線,在代碼的某個地方投擲的錯誤,並打破了綁定事件。 你在懸停或其他方面有一些錯誤,刪除一切,並綁定事件,他們是工作。

你知道這個權利,當第1行在documentready中斷時,下面的所有綁定可能不會被綁定。

$(document).ready(function() { 

    $('#button_1,#button_2').click(function() { 
    alert('Handler for .click() called.'); 

    }); 

}); 
+0

得到它固定的人感謝,是真正簡單,只是沒有意識到,你可以逗號分隔個人身份證。 – Fireworksable

0

也許我建議冷凝代碼一點,以更接近於:

$('a div[class^="button"]').click(
    function(e){ 
     e.stopPropagation(); // prevent the click bubbling to the parent 'a' element 
     $('.button_active') 
      .removeClass('button_active') 
      .addClass('button_normal'); 
     $(this).addClass('button_active').removeClass('button_normal'); 
    }); 

JS Fiddle demo


編輯響應從OP質疑:

我想補充,[the Fiddle updated by the OP to include the above code]實際上是設置 「button_hover」 作爲類,而不是 「button_active」,任何想法,爲什麼這樣做是?

是的;這是爲了響應CSS選擇器的特殊性,我在響應事件中根據需要添加和刪除類(而不是反覆檢查是否設置了button_hover)。由於元素以class="button_normal button_hover"結尾,並且CSS的順序(我認爲)更強調後面聲明的類,因此將保留button_hover。現在已經很晚了,我有點疲倦,但這就是(簡而言之)發生了什麼。

下面的演示採用了一切(我認爲),你需要的,加上修改後的CSS選擇器,只要你想應該做的:

$('a div[class^="button"]').hover(
    function(){ 
     $(this).addClass('button_hover').click(
      function(e){ 
       e.preventDefault(); 
       $('.button_active') 
        .addClass('button_normal') 
        .removeClass('button_active'); 
       $(this).addClass('button_active').removeClass('button_hover'); 
      }); 
    }, 
    function(){ 
     $(this).removeClass('button_hover'); 
    }); 

CSS:

.button_active, 
.button_normal.button_active { background: #000; } 
.button_normal.button_hover { background: #ff0; } 
.button_normal { background: #d89; } 

JS Fiddle demo


參考文獻:

+0

太好了,非常感謝:)。因此,爲了澄清以確保我正常工作,這會將click事件綁定到「button + wildcard」類,然後刪除類「button_active」併爲類「button_active」的所有元素添加「button_normal」 ,並將「button_active」添加到點擊的類中? – Fireworksable

+0

@Fireworksable:是的,這是花樣。 –

+0

只是添加,這實際上設置「button_hover」作爲類而不是「button_active」,任何想法爲什麼會這樣? http://jsfiddle.net/y2haz/5/ – Fireworksable