Maison  >  Article  >  interface Web  >  Comment détecter les changements de visibilité des éléments dans jQuery ?

Comment détecter les changements de visibilité des éléments dans jQuery ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 00:25:02310parcourir

How do you detect visibility changes for elements in jQuery?

Détection des changements de visibilité avec jQuery

Lorsque vous travaillez avec du contenu dynamique, il devient nécessaire d'effectuer des actions basées sur la visibilité d'éléments spécifiques. jQuery fournit un moyen d'attacher des gestionnaires d'événements qui se déclenchent lorsqu'un div devient visible.

Solution :

Pour y parvenir, vous pouvez étendre le jQuery .show() existant. méthode et déclencher des événements avant et après le changement de visibilité. Voici un extrait de code d'extension personnalisé :

jQuery(function($) {

  var _oldShow = $.fn.show;

  $.fn.show = function(speed, oldCallback) {
    return $(this).each(function() {
      var obj         = $(this),
          newCallback = function() {
            if ($.isFunction(oldCallback)) {
              oldCallback.apply(obj);
            }
            obj.trigger('afterShow');
          };

      // Trigger beforeShow event
      obj.trigger('beforeShow');

      // Call the original show method with the new callback
      _oldShow.apply(obj, [speed, newCallback]);
    });
  }
});

Utilisation :

Pour utiliser la méthode .show() étendue, vous pouvez lier des événements aux déclencheurs beforeShow et afterShow . Par exemple :

jQuery(function($) {
  $('#test')
    .bind('beforeShow', function() {
      alert('beforeShow');
    }) 
    .bind('afterShow', function() {
      alert('afterShow');
    })
    .show(1000, function() {
      alert('in show callback');
    })
    .show();
});

Ce code déclenchera les événements beforeShow et afterShow lorsque le div avec le test d'ID est affiché et masqué, vous permettant d'exécuter du code personnalisé en fonction du changement de visibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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