Jquery UI 单击不适用于拖动的图像。当图像 > 1

Posted

技术标签:

【中文标题】Jquery UI 单击不适用于拖动的图像。当图像 > 1【英文标题】:Jquery UI click not working on dragged images. When the images > 1 【发布时间】:2021-06-13 12:26:10 【问题描述】:

那里的代码正在运行,但问题是当我添加图像时。我可以点击它。但是当我添加下一个时,我只能单击新的。如果我想点击另一个我需要拖动它。然后我只能点击我拖动的那个。

不是只是div叫canvas。

我做错了什么?

function newImage(image)
var img = new Image()
var imgWidth = 0
var imgHeight = 0
img.onload = function ()
    imgWidth = img.naturalWidth
    console.log(img.naturalWidth)
    imgHeight = img.naturalHeight
    console.log(img.naturalHeight)

img.src = image.url
    $('#canvas').append('' +

            '<div id="img-'+image.id+'" class="position-absolute selectable position-relative" style="top: 0px; left: 0px; width: 0px; height: 0px; outline-offset: -2px;">' +
                '<img class="" id="realImg-'+image.id+'" src="'+image.url+'" style="left: 0px; top: 0px; width: 100%; height: 100%; mix-blend-mode: unset;">' +// to ma .nameide i .speed
            '</div>'
    )
    setInterval(function()
        $('#img-'+image.id).css('width', imgWidth)
        $('#realImg-'+image.id).css('width', imgWidth)
        $('#img-'+image.id).css('height', imgHeight)
        $('#realImg-'+image.id).css('height', imgHeight)
    , 100)
        $('#img-'+image.id).draggable(
            start: function( event, ui ) 
                $('.selectable').css('outline', '0px solid gold')
                console.log('reselect')
                activeImg = "#realImg-"+image.id
                activeImgId = image.id
                //$('#img-'+activeImgId).css('outline', '2px dashed white')
                $('#img-'+activeImgId).addClass('border-blend')
                console.log('selected')
            
        ).on('mouseup', function ()
            if ( $(this).is('.ui-draggable-dragging') ) 
                return;
            
            
                    activeImg = "#realImg-"+image.id
                    //$('#img-'+activeImgId).css('outline', '2px dashed white')
                    $('#img-'+activeImgId).addClass('border-blend')
                    //$('#realImg-'+image.id).css('marginLeft', '-2px')
                    //$('#realImg-'+image.id).css('marginTop', '-2px')
                    console.log('selected')

        )

这里你可以看到一个活生生的例子:https://jsfiddle.net/Lyd291jr/1/

顺便说一句,停止拖动后取消选择。这也是个问题。

【问题讨论】:

请创建minimal reproducible example 我已经做到了。试试看 请将所有内联样式移至 CSS 类。还缓存对 $('#img-'+image.id) 之类的引用并删除注释代码,当您执行此类操作时,代码将变得更加清晰,更易于阅读和理解。堆叠的解决方案是 CSS 修复,但其他人很难理解你所有写成内联样式的样式 【参考方案1】:

您可以将display: flex 申请为#canvas

#canvas
  display: flex;

并删除硬编码的内联绝对定位,height:0; 等,如下所示:https://jsfiddle.net/r0q1agwb/

【讨论】:

以上是关于Jquery UI 单击不适用于拖动的图像。当图像 > 1的主要内容,如果未能解决你的问题,请参考以下文章

可拖动的 jQuery UI 不适用于新创建的 DOM 元素

jquery 下载图像(数据:图像)链接不适用于 Ipad,但在窗口中工作正常

可拖动的 jQuery UI 不适用于动态创建的 div

jquery UI 可拖动不适用于 AJAX

如果有图像,如何捕获 jquery ui 自动完成的选择事件?

jquery UI 图像可调整大小但不可拖动?