javascript - 如何初始化一次并一次又一次地将相同的值传递给另一个函数?

标签 javascript jquery

考虑以下函数。每次调整浏览器大小以及每次我想传递 this.original_ul 的相同初始值时都会调用此函数。到此功能doLayout() 。它仅在初始化函数中单独计算一次。现在发生的事情是第二次调用时,对 $ul 的更改变量也反射(reflect)在this.original_ul上。我怎样才能防止这种情况发生?

doLayout : function () {
    alert('doLayout');
    var size, $ul, $lis, loop, i;
    size = this.computeElesPerCol();
    $ul = this.original_ul; // I wanna  preserve this between calls
    $lis = $ul.children().filter(':gt(' + (size - 1) + ')');
    loop = Math.ceil($lis.length / size);
    i = 0;

    $ul.css('float', 'left').wrap("<div style='overflow: hidden'></div>");

    for (; i < loop; i = i + 1) {
      $ul = $("<ul />").css('float', 'left').append($lis.slice(i * size, (i * size) + 4)).insertAfter($ul);
      $ul.css("list-style","none");
    }
  }

编辑::this是对 javascript 对象 WebFloatLayout 的引用,该对象基本上根据每次调整浏览器大小时的可用高度进行多列布局。初始输入是一长串 <lis>在一个<ul> 。以下是它的初始化方式:

     initialize:function () {
    var webFloatLayout = this;
    //call super parent initialize which will set the main dom element of component
    ec.comp.Component.prototype.initialize.call(this);
    var innerDivId = this.id + "_inner";
    innerDivId = innerDivId.replace(new RegExp(ec.config.separator, "g"), "\\" + ec.config.separator);
    $(document).ready(function() {
      webFloatLayout.original_ul = $("#" + innerDivId).find(">:first-child");
      webFloatLayout.original_ul.css("list-style","none");
      webFloatLayout.layout();
    });
  },

最佳答案

尝试clone方法:

$ul = this.original_ul.clone();

关于javascript - 如何初始化一次并一次又一次地将相同的值传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687570/

相关文章:

javascript - 当 NavBar 在小屏幕上垂直时如何加载处于折叠状态的 NavBar

Javascript - 返回意外结果的函数

javascript - 我如何使用 `Q.set` ?

javascript - 查询引用文档的字段

javascript - 了解 JavaScript 控制台中 "console.log(typeof null);"的调用

javascript - Bootstrap datetimepicker showClose 不起作用

jquery - 在 jQuery 中选择编号元素范围

jQuery 重构/维护

jquery - 嵌套折叠每次都调用父折叠

JQuery Colorbox $close.html(settings.close).show 不是函数错误