Javascript get(id)返回id和null,为什么?

Javascript get(id)返回id和null,为什么?,javascript,get,mootools,alert,Javascript,Get,Mootools,Alert,我正在使用mootools从一个元素中获取id,但它不起作用,它会返回id并返回null $$(".obj").addEvent("click",function(){ var objid=this.get("id"); alert(objid); }); 这在JSFIDLE中正常工作,但如果您在pc中尝试代码,则不会。它将一个接一个地为您返回两个警报,一个id为,另一个为null 为什么会这样 这就是全部 很难说没有看到标记。可能单击的元素有一个祖先,它也有类“obj”,但

我正在使用mootools从一个元素中获取id,但它不起作用,它会返回id并返回null

  $$(".obj").addEvent("click",function(){
   var objid=this.get("id");
  alert(objid);
  });
这在JSFIDLE中正常工作,但如果您在pc中尝试代码,则不会。它将一个接一个地为您返回两个警报,一个id为,另一个为null

为什么会这样

这就是全部


很难说没有看到标记。可能单击的元素有一个祖先,它也有类“obj”,但没有ID。单击将冒泡到祖先


看小提琴:

不看标记很难说。可能单击的元素有一个祖先,它也有类“obj”,但没有ID。单击将冒泡到祖先


请参阅fiddle:

简单阅读mootools文档,我认为您的问题可以通过以下方式解决:

$$(".obj").addEvent("click",function(e){
   var objid = $(this).get("id");
   e.stop();
});

这将迫使事件传播停止,而不是运行到祖先。

简单阅读mootools文档后,我认为您的问题可以通过以下方式解决:

$$(".obj").addEvent("click",function(e){
   var objid = $(this).get("id");
   e.stop();
});

这将强制事件传播停止,而不是运行到祖先。

如果它在JSFIDLE中工作,那么它就工作了。问题出在代码的其余部分

$$
返回元素的集合。如果在元素集合上调用
元素
方法,它会神奇地在每个元素上调用它(很像jQuery)。我的猜测是,正如其他人所指出的,你有一个冒泡的问题。当您单击一个
.obj
时,您也在单击共享该类的父元素

重现问题:

修复

您只需要使用
event.stopPropagation()


另外,在您的原始代码中,您不需要ID。所有的$(objId)都是无用的,您已经有了
这个
。只需使用它,它与$(objId)相同,只是更快,因为您已经拥有了它。

如果它在JSFIDLE中工作,那么它就工作了。问题出在代码的其余部分

$$
返回元素的集合。如果在元素集合上调用
元素
方法,它会神奇地在每个元素上调用它(很像jQuery)。我的猜测是,正如其他人所指出的,你有一个冒泡的问题。当您单击一个
.obj
时,您也在单击共享该类的父元素

重现问题:

修复

您只需要使用
event.stopPropagation()


另外,在您的原始代码中,您不需要ID。所有的$(objId)都是无用的,您已经有了
这个
。只需使用它,它与$(objId)相同,只是更快,因为您已经拥有它。

警报不运行吗?或者返回空值?对我来说,你的代码工作得很好。@Gustavo Costa De Oliveira它确实工作,但它会返回两个警报,第一个是id,当你单击警报上的“确定”后,另一个警报会弹出并显示为“仅为空”,我在两台不同的计算机上对此进行了treid,当事件绑定两次时,我在不同的浏览器中得到了相同的结果。检查您的代码,确保此代码没有重复或进入循环。如果可能的话,多给我看看code@GustavoCosta De Oliveira我发布了代码,现在我明白了为什么会发生这种情况,但我如何才能让它只带来被单击元素的id,因为我只需要它,而不需要另一个。警报不会运行?或者返回空值?对我来说,你的代码工作得很好。@Gustavo Costa De Oliveira它确实工作,但它会返回两个警报,第一个是id,当你单击警报上的“确定”后,另一个警报会弹出并显示为“仅为空”,我在两台不同的计算机上对此进行了treid,当事件绑定两次时,我在不同的浏览器中得到了相同的结果。检查您的代码,确保此代码没有重复或进入循环。如果可能的话,多给我看看code@GustavoCosta De Oliveira我发布了代码,现在我明白了为什么会发生这种情况,但是我仍然可以让它只带来被点击元素的id,因为我只需要它,而不需要另一个,但是就像我说的,它很好用,但是如果你正常使用它,它会给出额外的东西,是的,就像你说的,但是我不明白为什么它会给我空值,因为我不要求所有的id,只有我放在JSFIDLE链接中的“this”的id,但是就像我说的,它可以正常工作,但是如果你正常使用它,它会发出额外的东西,是的,就像你说的,但是我不明白为什么它会给我空值,因为我没有要求所有的id,只有“this”
$(this)
的id是不需要的
已扩展(与jQuery不同)。此外,e.stop()停止所有操作,stopPropagation可能更合适。
$(这)
不需要
已扩展(与jQuery不同)。此外,e.stop()停止一切,stopPropagation可能更合适。