2015-02-23 38 views
0

我的JavaScript似乎有问题。悬停/选定状态仅在第一个按钮上单击。但是当你点击其他人时,选中的状态现在已经在工作了。其他股利选项不工作

$('.option-btn').click(function(){ 
    if ($('.option').hasClass('selected')) { 
     $(this).removeClass('selected'); 
    } else { 
     $(this).addClass('selected'); 
    } 
});  

结果应该是用户可以点击尽可能多的。 (制作几个按钮来激活/选择)

这里的样品小提琴:http://jsfiddle.net/fdLfthnv/

+0

'$( '选项')'将返回的HTMLCollection有许多埃尔具有相同类名的元素,因此仅适用于正在工作的第一个元素... – 2015-02-23 06:31:20

回答

0

变化

if ($('.option').hasClass('selected')) 

if ($(this).hasClass('selected')) 

FIDDLE

UPDATE回答OP的附加问题:

您的jQuery改成这样:

$('.bet-offer div.option').click(function(){ 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
      $(this).siblings().css('pointer-events', 'auto'); 
     } else { 
      $(this).addClass('selected'); 
      $(this).siblings().css('pointer-events', 'none'); 
     } 
    }); 

更新FIDDLE

+0

它的工作!谢谢! – kgam 2015-02-23 06:35:04

+0

这是个好消息。与您的网站一切顺利。 – sideroxylon 2015-02-23 06:57:51

+0

但是,如果我的客户端已经从该行中选择了一个按钮,它想要禁用连续的其他按钮。看看这个(http://jsfiddle.net/1vuf1gm7/) – kgam 2015-02-23 07:44:41

0

我已经更新您的提琴:http://jsfiddle.net/fdLfthnv/1/

$('.option')将返回的HTMLCollection,不是每个被点击的项目。使用$(this)

这样做:

$('.option-btn').click(function(){ 
    if ($(this).hasClass('selected')) { 
     $(this).removeClass('selected'); 
    } else { 
     $(this).addClass('selected'); 
    } 
}); 
+0

它起作用了!非常感谢! – kgam 2015-02-23 06:35:37

+0

@kgam您可以接受为答案.. – 2015-02-23 06:36:41

0

您需要更改$( '选项')到$(这)对你的JavaScript的第二行:

$('.option-btn').click(function(){ 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
     } else { 
      $(this).addClass('selected'); 
     } 
    }); 

https://jsfiddle.net/lemoncurry/qbchar6L/

+0

它的工作!非常感谢:) – kgam 2015-02-23 06:35:57

+0

@kgam没问题。您可以接受答案和/或投票。 – 2015-02-23 06:46:25