2011-07-09 34 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