为什么jQuery click事件只能工作一次?

时间:2017-03-11 21:03:47

标签: javascript jquery

我正在尝试点击时使速度单位切换。但是,这仅适用一次。我已经没有东西可以尝试了。我还尝试了.click().live().toggle()(只让它消失并重新出现),等等。

HTML:

<li id="wind">Wind speed</br>
   <p class='windSpeedKm'></p>
</li>

使用Javascript:

var click = true;

$('#wind').on('click', function() {
  if (click = false) {
    $('#wind').html(function() {
      $(this).html("Wind speed<br>" + windKm);
      click = true;
    });
  } else if (click = true) {
    $('#wind').html(function() {
      $(this).html("Wind speed<br>" + windMi);
      click = false;
    });
  }
});

3 个答案:

答案 0 :(得分:0)

这并不是你要求的,但这会为你节省很多时间令人难以置信。它内置了自动转换功能,因此您无需手动更新这两个数字。它不会替换不必要的替换html。

<li id="wind">Wind speed</br>
    <p class='windSpeedKm' km="500">500</p>
</li>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
    function toMiles(km) {
        return parseFloat(km) * 0.62137;
    }

    $('#wind').on('click', function() {
        console.log($(this).attr("km"));
        windSpeedKm = $(this).find(".windSpeedKm");
        km = windSpeedKm.attr("km");
        if (km === windSpeedKm.html()) {
            windSpeedKm.html(toMiles(km));
        } else {
            windSpeedKm.html(km);
        }       
    });

</script>

答案 1 :(得分:0)

代码存在一些语法问题:

array[i] != array[i + 1]

注意:您无需通过查看var click = true; $('#wind').on('click', function() { if (click) { $(this).html("Wind speed<br>" + windKm): click = true; } else { $(this).html("Wind speed<br>" + windMi); click = false; } }); 将示例中的click = trueclick = false设置为if语句赋值,这已经是真的了!如果你想在确认它是真的之后将布尔值切换为假,你只会这样做。

答案 2 :(得分:0)

click = true应为click == true;