2

好的,所以我有一个包含两个 div 的父 div。父 div 自然会和最高的子 div 一样高,由内容决定。但是,无论内容如何,​​我都希望两个子 div 具有相同的动态高度。于是,我决定用JavaScript吧。这是我所拥有的:

<!--- Make main div's same height -->

<script type="text/javascript">

$(window).bind("load", function() {
   setDivHeight() {
      var left = $('#primary');
      var right = $('#secondary');

      var maxHeight = Math.max(left.height(), right.height());

      left.height(maxHeight);
      right.height(maxHeight);
   }
});

</script>

但是,当我尝试运行它时,我在控制台中收到此消息:

Uncaught TypeError: Property '$' of object [object Object] is not a function

我已经研究了大约4个小时了,我已经放弃了希望......

谁能告诉我我做错了什么???

4

1 回答 1

8

听起来您没有在该代码上方的页面中包含 jQuery,或者您有,但某些东西已经接管了该$符号。

确保在代码之前加载 jQuery,如下所示(这只是您可能使用的一个链接):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

和/或如果你有那个但其他东西正在使用这个$符号,你可以用你的代码做到这一点:

(function($) {
    $(window).bind("load", function() {
    // v----- Side note: This looks like a syntax error
       setDivHeight() {
          var left = $('#primary');
          var right = $('#secondary');

          var maxHeight = Math.max(left.height(), right.height());

          left.height(maxHeight);
          right.height(maxHeight);
       }
    });
})(jQuery);

它使用jQuery符号,将其作为$参数传递给函数。即使是该功能之外$的其他东西,它之内,它也将是.jQuery


旁注 1:您的代码包含语法错误。也许你的意思是:

(function($) {
    $(window).bind("load", function() {
        var left = $('#primary');
        var right = $('#secondary');

        var maxHeight = Math.max(left.height(), right.height());

        left.height(maxHeight);
        right.height(maxHeight);
    });
})(jQuery);

旁注2:在加载所有图像之后,窗口事件在加载过程中load发生得很晚。这可能是你想要的(例如,如果 div 的高度部分由图像决定),但如果不是,你可能想要使用它ready(在这种情况下,使用它的快捷方式之一),因为它发生得更快:

jQuery(function($) {
    var left = $('#primary');
    var right = $('#secondary');

    var maxHeight = Math.max(left.height(), right.height());
    left.height(maxHeight);
    right.height(maxHeight);
});

不过,再一次,也许您正在等待图像是有原因的。

于 2013-07-14T07:47:36.623 回答