javascript - CSS 切换按钮不正确的逻辑

标签 javascript jquery css

我有一个按钮,每次单击它时我都想更改它。它工作正常,除了它在前 2 次点击时没有改变。我的逻辑有什么问题?

 var soc_selected = new Boolean(false);
    $('#soccer-button').click(function() {
          if (soc_selected == false) {
              $('#soccer-button').css('background', 'url(assets/img/sports/soccer_us.png)');
        soc_selected ^= true;
    }
    else if (soc_selected == true){
        $('#soccer-button').css('background', 'url(assets/img/sports/soccer.png)');
        soc_selected ^= true;
    }
    });

最佳答案

为什么您需要对 XOR 进行所有这些奇怪的操作,这实际上会产生整数,而不是 bool 值?

你可以让它更简单:

var soc_selected = false; // not Boolean(false)
$('#soccer-button').click(function() {
    var bg = soc_selected
        ? 'url(assets/img/sports/soccer_us.png)' 
        : 'url(assets/img/sports/soccer.png)';

    $('#soccer-button').css('background', bg);

    soc_selected = !soc_selected;  
});

在我看来,它现在看起来更加透明和清晰。

另一个不错的选择是在 CSS 类中定义样式并执行以下操作:

$("#soccer-button").click(function() {
    $(this).toggleClass('us');
});

也解决了需要设置初始背景的问题。

这是 working JSFiddle demo .

关于javascript - CSS 切换按钮不正确的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280994/

相关文章:

javascript - Json 到字符串到 JavaScript 数组

javascript - 显示基于 2 个下拉选项的特定文本输出

javascript - 为什么我在 Canvas 上创建的矩形没有放在正确的位置?

javascript - Div 覆盖在 IFrame 上

javascript - Html 你能从 javascript 运行 css 代码吗?

javascript - 用 jQuery 或 Javascript 替换 iFrame

javascript - Jquery 每个函数在服务器上不工作

javascript - 使用 ||在 javascript 开关中

javascript - 相对于输入 [type=range] 的绝对定位 - 不工作

html - 使用窄分辨率时标题字母重叠