Maison > interface Web > js tutoriel > menu contextuel personnalisé jquery, tout sélectionner, sélection discontinue_jquery

menu contextuel personnalisé jquery, tout sélectionner, sélection discontinue_jquery

WBOY
Libérer: 2016-05-16 15:12:42
original
1236 Les gens l'ont consulté

Récemment, j'ai dû implémenter certains effets personnalisés dans le projet, tels que le menu contextuel, tout sélectionner, la sélection discontinue, etc. Je pense que l'essentiel est de clarifier la logique et les relations entre événements. Pour y parvenir, il existe également des plug-ins prêts à l'emploi, tels que le sélectionnable de jQuery UI.

1. Menu contextuel
Lorsque vous naviguez sur le Web, cliquez avec le bouton droit de la souris (ou ctrl+clic gauche sur le pavé tactile) et l'élément de menu contextuel par défaut du navigateur apparaîtra, comme ceci :

Mais quand on souhaite personnaliser le clic droit sur un élément, comme ceci :

Vous devez d'abord désactiver le menu par défaut du navigateur et écouter l'événement contextmenu. Le code clé est le suivant :

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

Copier après la connexion

2. Sélectionner tout
Le ctrl+A par défaut (commande+A sous MAC) sélectionnera la page Web entière ou un élément modifiable ciblé.

<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>
Copier après la connexion

S'il n'y a que ces deux divs sur la page, appuyez sur ctrl/cmd+A et les deux divs seront sélectionnés. Si vous souhaitez uniquement sélectionner le contenu de div#box, le moyen le plus simple est d'ajouter contentEditable=true à. la div. Une autre façon consiste à écouter les événements du clavier.

Simulez en sélectionnant tous les sous-éléments p de div#box et en les mettant en surbrillance :

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

Copier après la connexion

3. Shift permet la sélection continue
Shift est combiné avec le bouton droit de la souris pour obtenir une sélection continue d'éléments, qui est simplement simulée ici.

<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>
Copier après la connexion

Lorsque vous maintenez Shift, le navigateur a une sélection continue par défaut, désactivez-la d'abord :

.unselect{
 -webkit-user-select: none;
 -moz-user-select: none;
 -ms-user-select: none;
 -o-user-select: none;
 user-select: none;
}
Copier après la connexion

Pour les versions inférieures d'IE, utilisez l'événement selectstart :

$('#box')[0].onselectstart = function(e){
  e.preventDefault();
  return false;
 };
Copier après la connexion

Enregistrez l'événement click pour p et écoutez les événements keydown et keyup de l'objet document :

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

Copier après la connexion

4. Sélection discontinue
La sélection discontinue nécessite de surveiller la touche ctrl (touche de commande sous mac) et d'enregistrer un événement clic pour l'élément.

 $(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');
  }
 })
Copier après la connexion

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à tout le monde dans l'apprentissage de la programmation jquery.

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal