Heim > Web-Frontend > js-Tutorial > Hauptteil

Beispiele für jQuery on()-Methoden und Vorteile von jQuery on() method_jquery

WBOY
Freigeben: 2016-05-16 15:42:07
Original
1115 Leute haben es durchsucht

Die jQuery on()-Methode ist eine offiziell empfohlene Methode zum Binden von Ereignissen.

$(selector).on(event,childSelector,data,function,map)
Nach dem Login kopieren

Mehrere bisher gängige Methoden, die hieraus erweitert wurden, sind:

bind()

 $("p").bind("click",function(){
    alert("The paragraph was clicked.");
  });
  $("p").on("click",function(){
    alert("The paragraph was clicked.");
  });
Nach dem Login kopieren

delegate()

$("#div1").on("click","p",function(){
    $(this).css("background-color","pink");
  });
  $("#div2").delegate("p","click",function(){
    $(this).css("background-color","pink");
  });
Nach dem Login kopieren

live()

  $("#div1").on("click",function(){
    $(this).css("background-color","pink");
  });
  $("#div2").live("click",function(){
    $(this).css("background-color","pink");
  });
Nach dem Login kopieren

Die oben genannten drei Methoden werden nach jQuery1.8 nicht mehr empfohlen. Offiziell hat in 1.9 die Verwendung der Methode live() eingestellt Es wird empfohlen, dass alle die Methode on() verwenden.

Tipp: Wenn Sie die an on() gebundene Methode entfernen müssen, können Sie die Methode off() verwenden.

$(document).ready(function(){
  $("p").on("click",function(){
    $(this).css("background-color","pink");
  });
  $("button").click(function(){
    $("p").off("click");
  });
});
Nach dem Login kopieren

Tipp: Wenn Ihre Veranstaltung nur einen Vorgang erfordert, können Sie die one()-Methode

verwenden
$(document).ready(function(){
  $("p").one("click",function(){
    $(this).animate({fontSize:"+=6px"});
  });
});
Nach dem Login kopieren

trigger()-Bindung

$(selector).trigger(event,eventObj,param1,param2,...)
$(document).ready(function(){
  $("input").select(function(){
    $("input").after(" Text marked!");
  });
  $("button").click(function(){
    $("input").trigger("select");
  });
});
Nach dem Login kopieren

Mehrere Ereignisse, die an dieselbe Funktion gebunden sind

$(document).ready(function(){
 $("p").on("mouseover mouseout",function(){
  $("p").toggleClass("intro");
 });
});
Nach dem Login kopieren

Mehrere Ereignisse, die an unterschiedliche Funktionen gebunden sind

$(document).ready(function(){
 $("p").on({
  mouseover:function(){$("body").css("background-color","lightgray");}, 
  mouseout:function(){$("body").css("background-color","lightblue");}, 
  click:function(){$("body").css("background-color","yellow");} 
 });
});
Nach dem Login kopieren

Benutzerdefinierte Ereignisse binden

$(document).ready(function(){
 $("p").on("myOwnEvent", function(event, showName){
  $(this).text(showName + "! What a beautiful name!").show();
 });
 $("button").click(function(){
  $("p").trigger("myOwnEvent",["Anja"]);
 });
});
Nach dem Login kopieren

Daten an Funktion übergeben

function handlerName(event) 
{
 alert(event.data.msg);
}
$(document).ready(function(){
 $("p").on("click", {msg: "You just clicked me!"}, handlerName)
});
Nach dem Login kopieren

Gilt für nicht erstellte Elemente

$(document).ready(function(){
 $("div").on("click","p",function(){
  $(this).slideToggle();
 });
 $("button").click(function(){
  $("<p>This is a new paragraph.</p>").insertAfter("button");
 });
});
Nach dem Login kopieren

Es gibt mehrere Möglichkeiten, Ereignisse in jQuery zu binden. Aus zwei Gründen wird empfohlen, die .on()-Methode zum Binden zu verwenden:

Die Methode 1.on() kann Ereignisse binden, die dynamisch zu Seitenelementen hinzugefügt werden

Beispielsweise müssen sich Ereignisse, die mit der Methode .on() gebunden werden, bei DOM-Elementen, die der Seite dynamisch hinzugefügt werden, nicht darum kümmern, wann das Element hinzugefügt wird, das das Ereignis registriert hat, und sie müssen auch nicht wiederholt gebunden werden . Einige Schüler sind möglicherweise daran gewöhnt, .bind(), .live() oder .delegate() zu verwenden. Wenn Sie sich den Quellcode ansehen, werden Sie feststellen, dass sie tatsächlich die Methode .on() und die Methode .live() aufrufen. Methode ist in jQuery1 Version 9 wurde entfernt.

bind:
function(
 types, data, fn ) {
  return this.on(
 types, null,
 data, fn );
},
live:
function(
 types, data, fn ) {
  jQuery(
this.context
 ).on( types, this.selector,
 data, fn );
  return this;
},
delegate:
function(
 selector, types, data, fn ) {
  return this.on(
 types, selector, data, fn );
}
Nach dem Login kopieren

Um durch .on() gebundene Ereignisse zu entfernen, verwenden Sie die Methode .off().

2. On()-Methodenbindungsereignisse können die Effizienz verbessern

In vielen Artikeln wurde die Verwendung von Event-Bubbling und Proxys erwähnt, um die Effizienz der Ereignisbindung zu verbessern. In den meisten Artikeln wurden jedoch die spezifischen Unterschiede nicht aufgeführt. Um dies zu überprüfen, habe ich einen kleinen Test durchgeführt.

Gehen Sie davon aus, dass der Seite 5.000 Li hinzugefügt werden, und testen Sie die Ladezeit der Seite mithilfe von Chrome Developer Tools-Profilen.

Normale Bindung (nennen wir es so)

$('li').click(function(){
  console.log(this)
});
Nach dem Login kopieren

Ausführungszeit des Bindungsprozesses

2013-08-13_190358

Eine normale Bindung entspricht der separaten Registrierung von Klickereignissen auf 5000li. Die Speichernutzung beträgt etwa 4,2 MB und die Bindungszeit beträgt etwa 72 ms.

.on() Bindung

$(document).on('click',
'li',
function(){
  console.log(this)
})
Nach dem Login kopieren

Ausführungszeit des Bindungsprozesses

2013-08-13_191010

Die

.on()-Bindung verwendet einen Ereignis-Proxy und registriert nur ein Klickereignis im Dokument. Die Speichernutzung beträgt etwa 2,2 MB und die Bindungszeit beträgt etwa 1 ms.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass es für alle hilfreich ist, die jquery on()-Methode zu lernen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage