JavaScript: Öğeden bağımsız olarak olayları yakalamak

  1. Bu etkinliğe sahip sayfadaki tüm DOM öğeleri için "odaklanmak" üzere bir etkinlik dinleyicisi ekleyebileceğim herhangi bir mevcut mekanizma var mı? Yoksa, bunu nasıl yapabilirim?

  2. Herhangi bir DOM öğesinin bir etkinliği tetiklediği her seferinde, konsol.log (bir şey) kullanmak istiyorum. Bunu nasıl yapabilirim?

DÜZENLEME: Herhangi bir çerçeve olmadan lütfen:)

0

4 cevap

Etkinliği vücuda veya html öğesine bağlayabilirsiniz. Veya tüm html'lerinizi kapatan başka herhangi bir öğe.

Ya da jQuery'yi kullanmak isterseniz,

$("*").bind("focus", function(e){
    console.log("something");
})
1
katma
Odağı olayı sayfada "her" öğeye bağlanıyor ???
katma yazar Juri, kaynak
Doğru, $ (document) yapabilirdiniz, ancak OP, ihtiyacını belirtmedi. Biliyorum ki, $ ("*") çok daha yavaş ama neredeyse elemente dayalı temelde kayıt yapmak istediği gibi geliyordu.
katma yazar Keith.Abramo, kaynak

Böyle bir şey çalışmalıdır (jQuery ile).

$("input").focus(function(){
   console.log($(this).attr("id"));
});

Here's a live example: http://jsbin.com/ipiciz/edit#javascript,html,live

0
katma

JQuery'de : input psönder seçiciyi kullanmayı deneyebilirsiniz.

$(':input').focus(function(e){
    console.log(e);
});

Bu, muhtemelen zaten aradığınız şey olan girdi öğelerine eklenecektir.

0
katma

Etkinlikler DOM üzerinden "kabarcık" atar, böylece bir dinleyiciyi belge, gövde, html veya başka herhangi bir ana öğeye (ör. Bir div) bağlayabilmeniz ve içerdiği öğeler tarafından tetiklenen her olayı dinleyebilmeniz gerekir.

Örneğin, JQuery'yi kullanarak bunu yapabilirsiniz:

$(document).bind('focus', function(e) { console.log(e); });

Bu, olayı öncelikle tetikleyen unsur ne olursa olsun, her odak olayını günlüğe kaydeder.

0
katma
... kabarcık iptal edilmediği sürece.
katma yazar Richard JP Le Guen, kaynak
Bu iddiayla ilgili problem, belirli olayların ( onfocus bunlardan biri olması) balon etmemesidir (IE'de). Genelleştiremezsin. Her olay özeldir.
katma yazar user1385191, kaynak