get (id) возвращает id и ноль, почему? - PullRequest
1 голос
/ 08 февраля 2011

Я использую mootools для получения идентификатора элемента, и он не работает, он возвращает идентификатор и ноль.

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

это нормально работает в jsfiddle, но если вы попробуете код внутри вашего компьютера, это не так. он вернет вам 2 предупреждения одно за другим, одно с идентификатором, а другое с нулевым.

почему это происходит?

это все

http://jsfiddle.net/hgXWm/

Ответы [ 3 ]

2 голосов
/ 08 февраля 2011

Кратко прочитав документацию по mootools, я думаю, что ваша проблема может быть решена следующим образом:

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

Это заставляет распространение события останавливаться, а не бежать к предкам.

2 голосов
/ 09 февраля 2011

Если это работает в jsfiddle, то это работает. Проблема в остальной части вашего кода.

$$ возвращает коллекцию элементов. Если вы вызываете метод Element для коллекции элементов, он волшебным образом вызывает его для каждого элемента (так же, как jQuery). Я предполагаю, что, как уже отмечали другие, у вас есть пузырящаяся проблема. Когда вы нажимаете один .obj, вы также щелкаете по родительскому элементу, который разделяет класс.

Воспроизведенная проблема:

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

Исправление

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

Вам просто нужно использовать event.stopPropagation()

Кроме того, в вашем исходном коде вам не нужен идентификатор. Все, что $ (objId) бесполезно, у вас уже есть this. Просто используйте его, это то же самое, что и $ (objId), только быстрее, потому что вы его уже получили.

0 голосов
/ 08 февраля 2011

Трудно сказать, не видя разметки. Возможно, элемент, по которому щелкнули, имеет предка, который также имеет класс obj, но не имеет идентификатора. Клик будет пузыриться до предка.

См. Скрипку: http://www.jsfiddle.net/doktormolle/cf3Aw/

...