2011-01-05 8 views
1

Sagen wir, ich möchte ein kleines Plugin namens "alertMeOnRemove", die selbsterklärend ist. Ich möchte, dass es die remove() Funktion für nur die Elemente außer Kraft setzt, an denen es aufgerufen wird.DOM-Element-spezifische Funktion überschreiben oder Funktion

$('a').alertMeOnRemove(); 
$('div').remove(); // no alert 
$('a.subset-of-a').remove(); //alert 
$('a').remove() //alert 

Ich weiß, allgemeine Überbrückung der jQuery-Funktion ist sowohl möglich als auch einfach. Ist das möglich?

Antwort

2

Ja, das wäre nicht schwierig sein.

(function(){ 
    var _remove = $.fn.remove; 

    $.fn.alertMeOnRemove = function(){ 
     this.each(function(){ 
      $.data(this, 'alertMeOnRemove', true); 
     }); 
    }; 

    $.fn.remove = function(){ 
     this.each(function(){ 
      if ($.data(this, 'alertMeOnRemove')) { 
       alert('removing item'); 
      } 
     }); 

     _remove.call(this); 
    }; 
})(); 
+0

Ausgezeichnet! Genau das habe ich gesucht. Habe nicht genau so gearbeitet, wie du es hast, aber ... '_remove.call (this);' muss außerhalb der '.each()' – smdrager

+0

Guter Fang sein, danke. – lonesomeday

0

Ich bin nicht wirklich sicher, ob ich Sie, aber Sie können es tun:

var _oldRemove = $.fn.remove; 
$.fn.remove = function() { 
    if(/* some condition */) 
     alert('foobar'); 

    _oldRemove.apply(this, arguments); 
}; 
Verwandte Themen