Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查元素是否具有特定类和特定ID_Javascript_Jquery_Html - Fatal编程技术网

Javascript 检查元素是否具有特定类和特定ID

Javascript 检查元素是否具有特定类和特定ID,javascript,jquery,html,Javascript,Jquery,Html,我见过关于检查元素是否具有类和特定id的线程,但我的设置方式不可能给出这些答案 我有一个以砖石结构布局的项目列表,每个项目都有一个project类。每个项目都有一个由项目标题命名的唯一id。当用户右键单击项目时,默认的Google Chrome菜单将被具有两个选项的自定义菜单取代, 在新选项卡中打开项目&查看项目详细信息 我当前的问题是获取用户右键单击的特定项目 以下是我的两个想法: 简单版本:检查用户右键单击的项目的ID 复杂版本:获取div的顶部和左侧偏移量,并将它们组合以获取自定义菜单的左

我见过关于检查元素是否具有类和特定id的线程,但我的设置方式不可能给出这些答案

我有一个以砖石结构布局的项目列表,每个项目都有一个
project
类。每个项目都有一个由项目标题命名的唯一id。当用户右键单击项目时,默认的Google Chrome菜单将被具有两个选项的自定义菜单取代,
在新选项卡中打开项目
&
查看项目详细信息

我当前的问题是获取用户右键单击的特定项目

以下是我的两个想法:

  • 简单版本:检查用户右键单击的项目的ID
  • 复杂版本:获取div的顶部和左侧偏移量,并将它们组合以获取自定义菜单的左上角点。
    然后检查该点是否位于项目的左上方
    点之间
    以及
    top+projectmg.height()和left+projectmg.width()
    以获得项目的右下角 我倾向于简单的版本,但这是我的问题:

    if($(".project").is("#project1name")) {
        // True
    }
    
    这样做的问题是,由于所有项目都有一个
    project
    类,如果至少一个项目具有
    if
    语句正在检查的给定id,则将所有项目都计算为true

    以下是我为页面设置的代码:

    var resizeTimer;
    $(窗口).on(“调整大小”,函数(){
    如果($(窗口).width()>1600){
    $(“.content”).css(“宽度”,“1521px”);
    }
    如果($(窗口).width()1400){
    (“.content”).css(“宽度”、“1268px”);
    }
    如果($(窗口).width()1200){
    $(“.content”).css(“宽度”,“1015px”);
    }
    如果($(窗口).width()1000){
    $(“.content”).css(“宽度”,“762px”);
    }
    如果($(窗口).width()800){
    $(“.content”).css(“宽度”,“509px”);
    }
    如果($(窗口).width()0){
    //藏起来
    $(“.custom menu”).hide(100);
    }
    });
    //如果单击了菜单元素
    $(“.custom menu li”)。单击(函数(){
    //这是触发的操作名称
    开关($(this.attr(“数据操作”)){
    //每个行动的案例。你的行动在这里
    案例“newTab”:
    警报(“第一”);
    打破
    案例“第二”:
    警报(“第二”);
    打破
    }
    //在触发操作后隐藏它
    $(“.custom menu”).hide(100);
    });
    
    正文{
    背景:#212121 ;;
    }
    .内容{
    背景#4242;
    填充:20px;
    最大宽度:1521px;
    利润率:150px自动;
    -webkit盒阴影:0px 0px 3px 0px rgba(0,0,0,1);
    -moz盒阴影:0px 0px 3px 0px rgba(0,0,0,1);
    盒子阴影:0px 0px 3px 0px rgba(0,0,0,1);
    }
    .项目{
    显示:内联块;
    }
    .项目:悬停{
    转换:比例(1.04);
    变换原点:中心;
    -webkit盒阴影:0px 0px 3px 0px rgba(0,0,0,1);
    -moz盒阴影:0px 0px 3px 0px rgba(0,0,0,1);
    盒子阴影:0px 0px 3px 0px rgba(0,0,0,1);
    }
    .自定义菜单{
    显示:无;
    z指数:1000;
    位置:绝对位置;
    溢出:隐藏;
    边框:1px实心#CCC;
    空白:nowrap;
    字体系列:无衬线;
    背景:#FFF;
    颜色:#333;
    边界半径:5px;
    填充:0;
    }
    .定制菜单李{
    填充:8px 12px;
    光标:指针;
    列表样式类型:无;
    过渡:全部。3秒轻松;
    }
    .自定义菜单li:悬停{
    背景色:#DEF;
    }
    
    
    • 在新选项卡中打开
    • 查看详细信息
    第一个选项是迄今为止解决您的问题的最佳解决方案,而且实现起来非常简单

    首先,您需要向
    .project
    元素添加一个
    id
    属性,因为原始HTML中缺少该属性。然后,您可以在菜单的
    数据('id')
    中存储导致
    contextmenu
    事件的元素的
    id

    从菜单中选择选项后,您可以从菜单中检索
    数据('id')
    ,并使用它了解需要哪个项目

    不过,关于您的代码,有几点需要注意。首先,
    
    
    • 在新选项卡中打开
    • 查看详细信息

    老实说。我甚至不记得为什么我把它当作计时器。这完全没有必要