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

时间:2011-02-08 01:43:23

标签: javascript get mootools alert

即时通讯使用mootools从元素中获取id并且它不起作用,它将id和null对齐。

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

这通常在jsfiddle中工作,但如果你尝试在你的内部代码,它不会。它将一个接一个地带回2个警报,一个带有id,一个带有null。

为什么会这样?

这就是整件事

http://jsfiddle.net/hgXWm/

3 个答案:

答案 0 :(得分:2)

关于mootools文档的简短阅读我认为你的问题可以通过这种方式解决:

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

此力事件传播停止而不是向祖先传播。

答案 1 :(得分:2)

如果它在jsfiddle中有效,那么它可以工作。问题出在你的其余代码中。

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

转载问题:

http://jsfiddle.net/rpflorence/hgXWm/4/

修复

http://jsfiddle.net/rpflorence/hgXWm/5/

您只需使用event.stopPropagation()

即可

此外,在您的原始代码中,您不需要ID。所有$(objId)都没用,你已经有了this。只是使用它,它与$(objId)相同,除了更快,因为你已经得到它。

答案 2 :(得分:0)

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

请参阅小提琴:http://www.jsfiddle.net/doktormolle/cf3Aw/