Heim >Web-Frontend >js-Tutorial >Benutzerdefiniertes Jquery-Rechtsklickmenü, alle auswählen, diskontinuierliche Auswahl_JQuery

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

WBOY
WBOYOriginal
2016-05-16 15:12:421241Durchsuche

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');
 });
})

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>

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');
 });
});

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>

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;
}

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

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

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');
  }
 })

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');
  }
 })

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

Stellungnahme:
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