javascript - 如何设置多个Jquery-UI可调整大小?

标签 javascript jquery jquery-ui

我使用 Jquery-UI 调整不同 div 的大小,但它们具有不同的“类型”和不同的参数(minWidth、minHeight、aspectratio ...)。这段代码可以工作,但最终的代码可能会有 20 个“类型”。

如何优化这段代码?

$(".child").resizable({
    containment: "parent",
    resize: function( event,ui ){
        if(ui.element.attr('data-type')=="type-b"){
            // specific code to type-b
        }
        if($(this).attr('data-type')=="type-c"){
            // specific code to type-c
        }
    },
    stop: function (event,ui) {
        $.ajax({
            url: "save.php",
            type: "POST",
            data: {id: ui.element.attr('id')},
            success: function (child_id) {
                var parent_id = $('#main').attr('id'),
                    full_id =(parent_id+"_"+child_id),
                    child_width = ui.size.width,
                    child_height = ui.size.height,
                    t=JSON.parse(sessionStorage.getItem(full_id));

                t.width=child_width;t.height=child_height;
                sessionStorage.setItem(full_id,JSON.stringify(t));
            }
        });
        if(ui.element.attr('data-type')=="type-a"){
            // specific code to type-a
        }
        if($(this).attr('data-type')=="type-b"){
            // specific code to type-b
        }
    }
});

$(".child.type-a").resizable({
    minWidth: 200,
    minHeight: 50,
    handles : "e,w"
}),$(".child.type-b").resizable({
    minWidth: 160,
    minHeight: 110,
    handles : "e,w"
}),$(".child.type-c").resizable({
    minWidth: 300,
    minHeight: 185,
    aspectRatio: 1.618/1
});

最佳答案

如果每一个都是独一无二的,那么你就不会偏离你所拥有的太远。一种选择是将所有变量存储在一个对象中并迭代每个变量以设置选项。示例:https://jsfiddle.net/hovqphko/

$(function() {
  var resOptions = {
    "type-a": {
      minWidth: 200,
      minHeight: 50,
      handles: "e,w"
    },
    "type-b": {
      minWidth: 160,
      minHeight: 110,
      handles: "e,w"
    },
    "type-c": {
      minWidth: 300,
      minHeight: 185,
      aspectRatio: 1.618 / 1
    }
  };

  $(".child").resizable({
    containment: "parent"
  });

  $.each(resOptions, function(k, v) {
    console.log("Setting", k, "to", v);
    $("." + k).resizable("option", v);
  });
});

关于javascript - 如何设置多个Jquery-UI可调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462177/

相关文章:

javascript - 选择项目时如何使用自动完成功能发布数据

javascript - 强制选择突出显示的 p :autoComplete item when panel is hidden by clicking outside

java - 在 Java applet 中,由 javascript 传递给 Java Applet 的字符串数据为 null

javascript - svg 无法正常旋转

javascript - 使用 css 和 javascript 旋转立方体时保持固定轴

javascript - 向下滚动时隐藏菜单,然后当向上滚动达到 0 时显示菜单 [javascript] 对我不起作用

javascript - Jquery UI 选项卡和选择框 - 下一个/上一个按钮

jquery - 使用 jquery 计算选中的 html 复选框的数量

jquery - 这行代码在Jquery中是什么意思?

javascript - 简单的 jQuery droppable 不工作