Javascript 从事件触发器获取id

Javascript 从事件触发器获取id,javascript,jquery,Javascript,Jquery,我已经尝试了我在堆栈溢出上找到的所有东西,但我无法让它工作。这是我的密码 $(文档).ready(函数(){ $(“.category,.submenu”).mouseenter(函数(){ var i=0; var id=“#category1”/*-$(obj.attr(“id”)*/ 如果(id=“#category1”){i=1}; $(“#子菜单”+i).toggleClass(“子菜单悬停”); $(#category“+i).toggleClass(“categoryHover”

我已经尝试了我在堆栈溢出上找到的所有东西,但我无法让它工作。这是我的密码

$(文档).ready(函数(){
$(“.category,.submenu”).mouseenter(函数(){
var i=0;
var id=“#category1”/*-$(obj.attr(“id”)*/
如果(id=“#category1”){i=1};
$(“#子菜单”+i).toggleClass(“子菜单悬停”);
$(#category“+i).toggleClass(“categoryHover”);
});
$(“#类别1,#子菜单1”).mouseleave(函数(){
$(“#子菜单1”).toggleClass(“子菜单悬停”)
$(“#category1”)。切换类别(“categoryHover”);
});
$(“#类别2,#子菜单2”).mouseenter(函数(){
$(“#子菜单2”).toggleClass(“子菜单悬停”);
$(“#category2”)。切换类别(“categoryHover”);
});
$(“#类别2,#子菜单2”).mouseleave(函数(){
$(“#子菜单2”).toggleClass(“子菜单悬停”);
$(“#category2”)。切换类别(“categoryHover”);
});
});

第1栏
第2栏
子菜单#2 第1栏
第2栏

要从触发事件的类获取id,请执行以下操作:

$(".category, .submenu").mouseenter(function(){
   var id = $(this).attr('id');
   ...
}
下次做一个JSFIDLE,但这里有一个我为您做的,显示它是有效的

在控制台中查找它正在获取您的id的证据。


最后,你会对你的比较陈述产生如下问题:

 if (id == "#category1") {i = 1};
因为jQuery不返回(
#
)符号。您明确地要求输入
id
,因此jQuery没有理由将
#
符号传递回字符串,表明
id

请考虑以下情况:

if (id == "category1") {i = 1};


注意:您没有理由在
==
上使用
==
,除非您对jQuery获取的id是否为string类型不确定。阅读这篇精彩的帖子:

你可以这样做:

 var id = $(this).hasClass("category") ? $(this).attr("id") : $(this).closest(".submenu").prev("a").attr("id");
  • 这是一个工作环境

在事件处理程序中使用
this
$(this)
。回答:使用
this.id
$(this.attr('id')
是的,我已经试过了,但不起作用。这是我实施它的方式吗?这是我的代码行。var id=$(this.attr(“id”);这是我的第一个JavaScript程序,所以可能我不了解代码结构的一些基本知识。@Matt你确定你“尝试”正确吗?看看我答案中的小提琴;我让它工作了。@Matt啊,我找到了可能让你挂断电话的东西。请看我更新的答案。“Matt:你可能想考虑使用<代码>:HOR/<代码>在你的CSS中处理你在这里做的类改变。谢谢大家!@马特很高兴我们找到了答案!当心。