jQuery“.on('click',....)”不适用于LET变量声明。但是工作VAR

时间:2017-01-14 21:23:12

标签: javascript jquery google-chrome debugging mobile

这是一个jquery错误吗?我有一个简单的点击事件。当我使用LET通过图像链接声明一些变量时,click事件停止在我的ipad(chrome)上工作。当我切换到LET时,一切正常。

PS:我有另一个使用相同代码的问题,但这完全不同。

// WHEN I USE "VAR" ".on( 'click' ,....)"
// works on mobile. With "LET" it does not.

let imageLink25 = "http://s020.radikal.ru/i709/1701/58/89fe5a582b92.png ";
let imageLink50 = "http: //i056.radikal.ru/1701/3e/0c7dcfd4956b.png";
let imageLink80 = "http://s011.radikal.ru/i318/1701/56/48fc3db701a0.png";

$('.size-list-item').on('click touchend', function(event) {
  event.preventDefault();

  $(".size-list-item").removeClass('active');
  $(this).toggleClass('active');
});
.active {
  font-size: 25px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu-list size-list-items">
  <a class="size-list-item" data-type="25m2" href="#000" onclick="void(0)">25м2</a>
  <a class="size-list-item active" data-type="50m2" href="#000" onclick="void(0)">50м2</a>
  <a class="size-list-item" data-type="80m2" href="#000" onclick="void(0)">80м2</a>
</div>

2 个答案:

答案 0 :(得分:1)

let变量仅在其块范围内可用。在您的情况下,如果它们位于jQuery块之外,则不能使用三个let变量。

这里有一个链接,可以很好地解释var,let和const之间的区别 https://www.sitepoint.com/preparing-ecmascript-6-let-const/

答案 1 :(得分:0)

我没有看到你甚至使用了定义的变量imageLink*

您的浏览器可能不支持let语句。根据{{​​3}},Chrome 49及更高版本默认完全支持它。

如果不支持,则会导致语法错误,导致JavaScript无法继续执行。这意味着,您的click事件永远不会被设置!

检查您在iPad上运行的Chrome版本。如果它低于49,那就是你的答案。

但是,如果版本介于41到48之间,则仍然可以使用let,但您需要位于Can I Use?。简而言之,它要求您将'use strict';放在JavaScript代码的开头。 ; - )