无法使用 jQuery 更改图像的不透明度

Can't change opacity of image with jQuery

我正在尝试获取图像以根据布尔标志更改不透明度。它应该在 var pauseDisabled = true 时降低不透明度,并在 pauseDisabled = false 时返回 1 的值。

我创建了下面的 fiddle 来模拟我的尝试。在此示例中,我只是尝试使用 link 来控制 on/off 开关。但是它不会降低不透明度,我不确定我做错了什么。

JS Fiddle: https://jsfiddle.net/w51Lxvjp/8/

<div class="pause">
    <a class="pause-btn">
        <img class="pause-img" src="https://cdn3.iconfinder.com/data/icons/buttons/512/Icon_4-512.png">
    </a>
</div>

<a class="disabler" href="#">Disable Button</a>
$(document).ready(function() {
    var pauseDisabled = false;

    $('.disabler').click(function() {
        pauseDisabled = true;
    })

    if (pauseDisabled === true) {
        $('.pause').css('opacity', '0.2');
    } else if (pauseDisabled === false) {
        $('.pause').css('opacity', '1');
    }
});

您的逻辑有缺陷,因为 if 条件在页面加载时只会 运行 一次。相反,每次在 click 事件处理程序中切换 pauseDisabled 标志时,您都需要设置不透明度。试试这个:

jQuery($ => {
  let pauseDisabled = false;

  $('.disabler').click(() => {
    pauseDisabled = !pauseDisabled;
    $('.pause').css('opacity', pauseDisabled ? '0.2' : '1');
  })
});
img { width: 250px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div class="pause">
  <a class="pause-btn">
    <img class="pause-img" src="https://cdn3.iconfinder.com/data/icons/buttons/512/Icon_4-512.png">
  </a>
</div>
<a class="disabler" href="#">Disable Button</a>

无需在此点击事件之外创建此 if else。您可以直接在点击事件中更改不透明度。

        $(document).ready(function() {
  var pauseDisabled = false;

  $('.disabler').click(function() {

     if (pauseDisabled === false) {
    $('.pause').css('opacity', '0.2');
    pauseDisabled = true;
  } else if (pauseDisabled === true) {
    $('.pause').css('opacity', '1');
    pauseDisabled = false;
  }
  })


});

您的 jsFiddle 已更新:

https://jsfiddle.net/w51Lxvjp/15/

基本上,您的 IF 结构仅在单击 link 之前执行一次。

$('.disabler').click(function() {
    pauseDisabled = !pauseDisabled;
    if (pauseDisabled === true) {
    $('.pause-img').css('opacity', '0.2');
  } else {
    $('.pause-img').css('opacity', '1');
  }
})