Javascript 检查元素是否具有特定类和特定ID
我见过关于检查元素是否具有类和特定id的线程,但我的设置方式不可能给出这些答案 我有一个以砖石结构布局的项目列表,每个项目都有一个Javascript 检查元素是否具有特定类和特定ID,javascript,jquery,html,Javascript,Jquery,Html,我见过关于检查元素是否具有类和特定id的线程,但我的设置方式不可能给出这些答案 我有一个以砖石结构布局的项目列表,每个项目都有一个project类。每个项目都有一个由项目标题命名的唯一id。当用户右键单击项目时,默认的Google Chrome菜单将被具有两个选项的自定义菜单取代, 在新选项卡中打开项目&查看项目详细信息 我当前的问题是获取用户右键单击的特定项目 以下是我的两个想法: 简单版本:检查用户右键单击的项目的ID 复杂版本:获取div的顶部和左侧偏移量,并将它们组合以获取自定义菜单的左
project
类。每个项目都有一个由项目标题命名的唯一id。当用户右键单击项目时,默认的Google Chrome菜单将被具有两个选项的自定义菜单取代,在新选项卡中打开项目
&查看项目详细信息
我当前的问题是获取用户右键单击的特定项目
以下是我的两个想法:
然后检查该点是否位于项目的左上方
点之间
以及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')
,并使用它了解需要哪个项目
不过,关于您的代码,有几点需要注意。首先,
老实说。我甚至不记得为什么我把它当作计时器。这完全没有必要