调整大小和调用函数

时间:2015-03-31 13:28:08

标签: javascript jquery

我有这个功能,当你点击html时,它检查多个元素的宽度并将其与窗口宽度进行比较。我无法使用resize函数。我想我说错了。

$(document).ready(function() {

  $(window).resize(function() {
    var conditionWidth = checkWidth()
  });

  function checkWidth() {
    var elementWidth = 1;
    $("div>div").each(function() {
      if ($(this).width() > $("html").width() / 2) {
        elementWidth = 2;
      }
    });
    return elementWidth;
  }

  var conditionWidth = checkWidth()

  $("body").off("click").click(function() {
    alert(conditionWidth);
  });
})
div div {
  position: relative;
  height: 100px;
  width: 100px;
  margin-top: 20px;
}
.rectangle1 {
  background-color: black;
  width: 100px;
}
.rectangle2 {
  background-color: red;
  width: 200px;
}
.rectangle3 {
  background-color: black;
  width: 300px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div>
  <div class="rectangle1"></div>
  <div class="rectangle2"></div>
  <div class="rectangle3"></div>
</div>

1 个答案:

答案 0 :(得分:1)

由于您使用var在resize处理程序中声明变量,因此该变量对于resize handler方法是本地的,并且不会更新闭包范围(dom ready handler)的值。

$(document).ready(function () {

    var conditionWidth = checkWidth()

    $(window).resize(function () {
        //when you use var it becomes a local variable
        conditionWidth = checkWidth()
    });

    function checkWidth() {
        var elementWidth = 1;
        $("div>div").each(function () {
            if ($(this).width() > $("html").width() / 2) {
                elementWidth = 2;
            }
        });
        return elementWidth;
    }

    $("body").off("click").click(function () {
        alert(conditionWidth);
    });
})