Как перехватить currentTarget при событии click с помощью mootools в IE?

#javascript #mootools #mouseevent

#javascript #mootools #mouseevent

Вопрос:

Я создал простой код для обработки события click, но IE, как я и ожидал, возвращает NULL currentTarget. Я заинтересован в восстановлении тега ‘a’.

Вот код:http://jsfiddle.net/PUjHf/12

 <div id="features_menu">
    <a id="design_bt">
        <div class="not-selected"><span>DESIGN</span></div>
        <div class="selected"><span>DESIGN</span></div>
    </a>
</div>
  
 window.addEvent( 'domready' , function(event){
      $$('#features_menu a').each(function(item, index){
          item.addEvent('click', function(event){
              console.log($(event.target));
              console.log($(event.event.currentTarget));
          })
      })  
})
  

На данный момент я не нашел никакого чистого решения, кто-нибудь может мне помочь?

Ответ №1:

MooTools не распространяется DOMEvent на include currentTarget (я не знал, что это было, прежде чем вы упомянули об этом).

Но это не currentTarget точно this в контексте обратного вызова события? Смотрите r21.

Комментарии:

1. кстати, это было подчеркнуто моим предыдущим ответом, не уверен, что это оправдывало новый ответ, в котором говорилось, что domevent не нормализуется mootools

2. Дорогой @DimitarChristoff, я понимаю, вы могли быть разочарованы, если бы мой ответ выглядел для вас как дубликат вашего. Однако я начал редактировать свой ответ до того, как был опубликован ваш, и, когда я прочитал ваш, я не понял, что вы имели в виду. Перечитывая это сейчас, я все еще не нахожу это понятным. Вы не объясняете, о currentTarget чем говорит OP, а только ссылаетесь на OP item ; для меня ваш ответ действительно не является ответом на вопрос «Как перехватить currentTarget при событии click с помощью mootools в IE?». Если вы все еще раздражены, пожалуйста, скажите мне, что бы вы хотели, чтобы я с этим сделал 🙂

3. у OP был простой вопрос: > I am interested in recovering the tag 'a'. . ответ: это this или item . нет необходимости вдаваться в event объяснения по этому поводу, поскольку здесь используется неправильный API. в любом случае, я совершенно не возражаю.

4. Хотя ваше решение решает эту конкретную проблему, оно на самом деле не помогает добраться до currentTarget в более сложных сценариях. Например, я хочу переопределить метод события stopPropagation (), чтобы я мог измерить некоторую статистику кликов в моем приложении. Внутри этого метода stopPropagation у меня нет способа определить currentTarget в более старом IE : (

5. @qbolec Если вы хотите открыть новый вопрос с более подробной информацией, то, возможно, мы сможем вам помочь 😉

Ответ №2:

почему бы просто не console.log(this); // a или console.log(item); //a -> this == item; // true;

http://jsfiddle.net/PUjHf/20/