即使我重新加载页面,如何将 div 元素放在同一位置并检索 .data() 值

拉文达 V

我正在尝试将 div 的标签附加到 div 中,并且 div 的大小可以重新调整并且可以拖动。他们还使用 .data() 存储一些值。演示如下

在此处输入图片说明

我需要将 div 放在父 div 中的同一个位置,并获取我为每个 div 存储的值,即使我重新加载页面

用于在大父 div 中附加 div 的代码

            width: wbox.val() * zoom,
            height: lbox.val() * zoom,
            padding: '0.5em',
            'font-size': '1em',
            border: '2px solid',
            'user-select': 'none',
            'background-color': 'gray',
            cursor: 'pointer',
            position: 'absolute',
            // 'font-size': '',
            block: 'inline'
        });
        $element.attr('id', component.val());
        $('#convas').append($element);
        $element.data('w', wbox.val());
        $element.data('l', lbox.val());

        $element.draggable({
            containment: '#convas',
        });
拉文达 V

简单的方法是创建每个 div 的属性列表并将其存储在本地存储或其他地方,然后在用户重新加载页面时检索它。

储藏

   function addDraggableBox(
    canvas_id = null,
    id,
    length = null,
    width = null,
    componentValue = null,
    classificationData = null,
    tile_position = null
) {
    let component_value = componentValue || component.children(':selected').text(); // text to be shown for a component inside canvas
    let bg_color = 'grey';
    let txt_color = 'black';
    const component_width = Number(width) || Number(wbox.val());
    const component_length = Number(length) || Number(lbox.val());

    component_value += ` (Area: ${component_width * component_length} sq.m)`; // add area to the component canvas text

    if (classificationData) {
        const { bgColor, txtColor } = classificationData;

        bg_color = bgColor;
        txt_color = txtColor || txt_color;
    }

    var $element = $('<div class="draggablebox" />').text(component_value).css({
        width: component_width * zoom,
        height: component_length * zoom,
        padding: '0.5em',
        'font-size': '1em',
        border: '2px solid',
        'user-select': 'none',
        background: bg_color,
        color: txt_color,
        cursor: 'pointer',
        position: 'absolute',
        block: 'inline',
        top: tile_position ? tile_position.top + 'px' : 0 || 0,
        left: tile_position ? tile_position.left + 'px' : 0 || 0
    });
    $element.attr('id', id);
    $(canvas_id || '#convas').append($element);
    $element.on('mouseup', draggableboxEvent);

    $element.draggable({
        containment: canvas_id || '#convas',
        drag: function(event, ui) {
            const reposition = ui.position;
            const tile_id = event.target.id;
            const floor_id = floor_dropdown.value;

            for (const floor of floor_data) {
                if (Number(floor.id) === Number(floor_id)) {
                    const tile = floor.tiles.find((t) => t.id === tile_id);

                    if (tile) {
                        tile['position'] = reposition;
                    }

                    re_draw(floor_id);
                    break;
                }
            }
        }
    });
    usersitearea += lbox.val() * wbox.val();

    var areacal = usersitearea * 100 / totalsitearea;
    $('#freespace').text(100 - areacal + '%');
} 

取回

   function re_draw(floorId = null) {
    const floor_id = floorId || floor_dropdown.value;
    const site_length = Number(localStorage.getItem('siteLenght')) || 800;
    const site_width = Number(localStorage.getItem('siteWidth')) || 800;
    const zoom = $('#zoomcanvas').val();

    if (is_basement) {
        floor_heading.text('Basement ' + floor_id);
    } else {
        floor_heading.text('Floor ' + (Number(floor_id) - Number(no_of_basements)));
    }

    const cur_floor_data = floor_data.find((floor) => Number(floor.id) === Number(floor_id));

    canvas.empty(); // empty the DOM

    // set height & width of canvas
    canvas.css({ height: site_length * zoom, width: site_width * zoom });

    if (cur_floor_data) {
        cur_floor_data.tiles.forEach((tile) => {
            const component_value = components_data.find((c) => Number(c.id) === Number(tile.componentId)).value;
            const classificationData = components_classification.find(
                (c) => Number(c.id) === Number(tile.classification)
            );
            const tile_position = tile.position || null;

            addDraggableBox(null, tile.id, tile.length, tile.width, component_value, 
        });
    }

    localStorage.setItem('floor_data', JSON.stringify(floor_data));
} ```

make sure you parse the list with JSON parser when you retrieve and JSON stringify when you set the value.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

滚动页面时强制div元素保持在同一位置

来自分类Dev

当div停留在同一位置时,如何在div中换行?

来自分类Dev

当div停留在同一位置时,如何在div中换行?

来自分类Dev

将所有元素放在同一位置

来自分类Dev

为什么我的div都在悬停时都显示在同一位置?

来自分类Dev

无论浏览器如何,如何使div位于同一位置?

来自分类Dev

如何使div始终漂浮在同一位置?

来自分类Dev

如何使div内的标签与低位标签位于同一位置

来自分类Dev

如何使div始终漂浮在同一位置?

来自分类Dev

如何使不同的div出现在同一位置?

来自分类Dev

如何在同一位置刷新 div 避免重复行

来自分类Dev

如何使用javascript在复选框单击上交替显示两个div(在同一位置显示一个div并在同一位置隐藏另一个div)

来自分类Dev

为什么将密码哈希值和盐值都存储在同一位置被认为可以?

来自分类Dev

将两个不同的文本放在HTML页面的同一位置

来自分类Dev

使div在单击时显示在同一位置

来自分类Dev

同一位置上的双重div

来自分类Dev

AngularJS:如何隐藏一个控制器div,然后在同一位置显示另一个控制器div?

来自分类Dev

将鼠标悬停在同一位置的两个元素上

来自分类Dev

如何使用CSS在同一位置显示2个元素?

来自分类Dev

CSS 如何让表格中的所有元素在同一位置结束

来自分类Dev

如何在 R 中排列在列表中的多个数组中的同一位置输入来自单个向量的连续不同值?

来自分类Dev

将多个图像放置在同一位置

来自分类Dev

如何使按钮保持在同一位置?

来自分类Dev

如何保持文字在同一位置?

来自分类Dev

调整浏览器大小时,如何将每个元素固定在同一位置?

来自分类Dev

即使在重新加载页面 jQuery 后,也将 div 隐藏一段时间

来自分类Dev

根据索引将列值从一个位置更新到另一位置

来自分类Dev

如何使用applescript将桌面元素(图标,文件,文件夹)始终保存在同一位置

来自分类Dev

隐藏<div>并在同一位置显示一个新的?

Related 相关文章

  1. 1

    滚动页面时强制div元素保持在同一位置

  2. 2

    当div停留在同一位置时,如何在div中换行?

  3. 3

    当div停留在同一位置时,如何在div中换行?

  4. 4

    将所有元素放在同一位置

  5. 5

    为什么我的div都在悬停时都显示在同一位置?

  6. 6

    无论浏览器如何,如何使div位于同一位置?

  7. 7

    如何使div始终漂浮在同一位置?

  8. 8

    如何使div内的标签与低位标签位于同一位置

  9. 9

    如何使div始终漂浮在同一位置?

  10. 10

    如何使不同的div出现在同一位置?

  11. 11

    如何在同一位置刷新 div 避免重复行

  12. 12

    如何使用javascript在复选框单击上交替显示两个div(在同一位置显示一个div并在同一位置隐藏另一个div)

  13. 13

    为什么将密码哈希值和盐值都存储在同一位置被认为可以?

  14. 14

    将两个不同的文本放在HTML页面的同一位置

  15. 15

    使div在单击时显示在同一位置

  16. 16

    同一位置上的双重div

  17. 17

    AngularJS:如何隐藏一个控制器div,然后在同一位置显示另一个控制器div?

  18. 18

    将鼠标悬停在同一位置的两个元素上

  19. 19

    如何使用CSS在同一位置显示2个元素?

  20. 20

    CSS 如何让表格中的所有元素在同一位置结束

  21. 21

    如何在 R 中排列在列表中的多个数组中的同一位置输入来自单个向量的连续不同值?

  22. 22

    将多个图像放置在同一位置

  23. 23

    如何使按钮保持在同一位置?

  24. 24

    如何保持文字在同一位置?

  25. 25

    调整浏览器大小时,如何将每个元素固定在同一位置?

  26. 26

    即使在重新加载页面 jQuery 后,也将 div 隐藏一段时间

  27. 27

    根据索引将列值从一个位置更新到另一位置

  28. 28

    如何使用applescript将桌面元素(图标,文件,文件夹)始终保存在同一位置

  29. 29

    隐藏<div>并在同一位置显示一个新的?

热门标签

归档