Heim > Web-Frontend > js-Tutorial > Hauptteil

Benutzerdefiniertes Jquery-Rechtsklickmenü, alle auswählen, diskontinuierliche Auswahl_JQuery

WBOY
Freigeben: 2016-05-16 15:12:42
Original
1213 Leute haben es durchsucht

Vor kurzem musste ich einige benutzerdefinierte Effekte in das Projekt implementieren, z. B. ein Rechtsklick-Menü, „Alles auswählen“, eine diskontinuierliche Auswahl usw. Ich denke, das Wichtigste ist, die Logik und die Ereignisbeziehungen zu klären. Um dies zu erreichen, stehen auch fertige Plug-Ins zur Verfügung, beispielsweise jQuery UI's auswählbar.

1. Rechtsklick-Menü
Wenn Sie im Internet surfen, klicken Sie mit der rechten Maustaste (oder Strg+Linksklick auf dem Touchpad) und der Standard-Rechtsklick-Menüpunkt des Browsers wird angezeigt, etwa so:

Aber wenn Sie den Rechtsklick auf ein Element anpassen möchten, gehen Sie wie folgt vor:

Sie müssen zuerst das Standardmenü des Browsers deaktivieren und auf das Kontextmenü-Ereignis hören. Der Schlüsselcode lautet wie folgt:

$(function(){
 $('#box').on('contextmenu',function(event){
 event.preventDefault();
  $(this).trigger('click');
  $('#menulist').css({
   top: event.pageY,
   left: event.pageX
  });
 });
 $('#box').click(function(){
  $('#menulist').css('display','block');
 });
})

Nach dem Login kopieren

2. Alles auswählen
Die Standardeinstellung Strg+A (Befehl+A unter MAC) wählt die gesamte Webseite oder ein fokussiertes bearbeitbares Element aus.

<div id='box'>
 <p class='first'>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
</div>
<div id='other'>
 <p class='first'>这是另外一个div,这是另外一个div,</p>
 <p>这是另外一个div,这是另外一个div,</p>
 <p>这是另外一个div,这是另外一个div,</p>
 <p>这是另外一个div,这是另外一个div,</p>
</div>
Nach dem Login kopieren

Wenn es nur diese beiden Divs auf der Seite gibt, drücken Sie Strg/cmd+A und beide Divs werden ausgewählt. Wenn Sie nur den Inhalt von div#box auswählen möchten, ist die einfache Möglichkeit, contentEditable=true zu hinzuzufügen die div. Eine andere Möglichkeit besteht darin, auf Tastaturereignisse zu warten.

Simulieren Sie die Auswahl aller Unterelemente p von div#box und deren Hervorhebung:

$(function(){
 $(document).keydown(function(event){
 //windows下是event.ctrlKey
 if(event.metaKey && event.which === 65){
  event.preventDefault();
  $('#box>p').trigger('click');
 }
 });
 $('#box').on('click', 'p', function(){
 $(this).css('color','red');
 });
});

Nach dem Login kopieren

3. Shift ermöglicht kontinuierliche Auswahl
Durch die Kombination der Umschalttaste mit der rechten Maustaste wird eine kontinuierliche Auswahl von Elementen erreicht, die hier einfach simuliert wird.

<div id='box' class="unselect">
 <p class='first'>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
 <p>这是个div,这是个div,</p>
</div>
Nach dem Login kopieren

Wenn Sie die Umschalttaste gedrückt halten, verfügt der Browser standardmäßig über eine kontinuierliche Auswahl. Deaktivieren Sie diese zuerst:

.unselect{
 -webkit-user-select: none;
 -moz-user-select: none;
 -ms-user-select: none;
 -o-user-select: none;
 user-select: none;
}
Nach dem Login kopieren

Für niedrigere IE-Versionen verwenden Sie das Selectstart-Ereignis:

$('#box')[0].onselectstart = function(e){
  e.preventDefault();
  return false;
 };
Nach dem Login kopieren

Registrieren Sie das Klickereignis für p und hören Sie sich die Keydown- und Keyup-Ereignisse des Dokumentobjekts an:

$(document).keydown(function(e){
  if(e.shiftKey){
   shiftkey = 1;
  }
 }).keyup(function(){
  shiftkey = 0;
 });
$('#box').on('click','p',function(){
  if(shiftkey === 1){
   second = $(this).index();
   for(var min = Math.min(first,second); min <= Math.max(first,second); min++){
    $('#box').find('p').eq(min).css('color','red');
   }
  } else {
   first = $(this).index();
   $(this).css('color','red').siblings().css('color','black');
  }
 })

Nach dem Login kopieren

4. Diskontinuierliche Auswahl
Diskontinuierliche Auswahl erfordert die Überwachung der Strg-Taste (Befehlstaste unter Mac) und die Registrierung eines Klickereignisses für das Element.

 $(document).keydown(function(e){
  if(e.metaKey){ //win是e.ctrlKey
   ctrlkey = 2;
  }
 }).keyup(function(){
  ctrlkey = 0;
 });
 $('#box').on('click','p',function(){
  if(ctrlkey === 2){
   $(this).css('color','red');
  } else {
   $(this).css('color','red').siblings().css('color','black');
  }
 })
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle beim Erlernen der JQuery-Programmierung hilfreich ist.

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