jQuery 如何识别所选对象的类型?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18893468/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 22:43:07  来源:igfitidea点击:

How to identify the type of a selected object?

javascriptjqueryhtmlcanvasfabricjs

提问by anam

I am placing Text, Image and Shapes on canvas using Fabric.js. I have made Three different Edit-Panels for all three. When user select text I want to show text panel. like wise for image and shapes.

我正在使用 Fabric.js 在画布上放置文本、图像和形状。我为所有三个制作了三个不同的编辑面板。当用户选择文本时,我想显示文本面板。像明智的图像和形状。

How to identify type of selected Object?

如何识别所选对象的类型?

回答by Kienz

canvas.getActiveObject().get('type')as simmi simmi said is correct. You can also listen to events:

canvas.getActiveObject().get('type')正如simmi simmi所说的那样是正确的。您还可以收听事件:

function onObjectSelected(e) {
  console.log(e.target.get('type'));
}
canvas.on('object:selected', onObjectSelected);

回答by anam

I solved this issue using following code::

我使用以下代码解决了这个问题::

  if(canvas.getActiveObject().get('type')==="text")
        {
            //Display text panel
            console.log('text panel Displayed');
            $("#Image_left_panel").css("display", "none");
            $("#shape_left_panel").css("display", "none");
            //$("#left_panel").css("display", "block");
        }
        else if(canvas.getActiveObject().get('type')==="Image")
        {
            //Display Image Panel
            console.log('Image Panel Displayed');
            $("#Image_left_panel").css("display", "block");
            $("#shape_left_panel").css("display", "none");
            $("#left_panel").css("display", "none");
        }
        else
        {

        }


        });

回答by Renon Stewart

Try isType()

尝试 isType()

Sample function for getting selected objects

获取选定对象的示例函数

function onObjectSelected(o){
    //activeObject = canvas.getActiveObject()
    activeObject = o.target;

    if(activeObject.isType('text')){
       //display text logic
    }
    else if(activeObject.isType('image')){
      //display image
    }
    else if( activeObject.isType('xyz')){
      //display shape logic
    }
}

canvas.on('object:selected', onObjectSelected);

回答by Jamal

In fabricjs 3.4, to get the object type, just use:

在fabricjs 3.4 中,要获取对象类型,只需使用:

var objType = canvas.getActiveObject().type;

On IText object, the above will return: i-text

在 IText 对象上,上面将返回:i-text

On image, it will return: image

在图像上,它将返回:图像

function onObjectSelected() { 
     // check if type is a property of active element
     var objType = (canvas.getActiveObject().type ? canvas.getActiveObject().type : "");
     // your code
}

canvas.on('object:selected', onObjectSelected);