Ceci est très expérimental (vous êtes prévenus!) Et pourrait ne pas être un bon moyen de me votre problème ou de répondre à cette question, mais il est apparu que vous pouvez faire deux choses:
1 - Substituez la méthode .toggle
principale de jQuery pour ajouter des données aux éléments auxquels elle est appliquée.
2 - liez un gestionnaire d'événements changeData
aux éléments, comme de jQuery 1.4.4
Cela signifie, vous pouvez faire quelque chose se produire chaque fois qu'un élément se basculée. Le même principe pourrait s'appliquer aux méthodes .hide
et .show
, ou à toute autre méthode d'ailleurs.
// 1 - override .toggle()
var original = jQuery.fn.toggle;
jQuery.fn.toggle = function() {
console.log("Override method: toggle()");
// call the original toggle
original.apply(this, arguments);
// record the element's visibility
$(this).data("visible", $(this).is(":visible"));
return this;
};
// 2 - bind a changeData event handler to a 'watch list'
$('div').bind("changeData", function() {
alert("Visibility changed to: " + $.data(this, 'visible'));
});
<!-- exhaustive test markup -->
<div id="test">Hello</div>
<div id="test2" style="display:none">Hello 2</div>
// go!
$(document).ready(function() {
$("#test").toggle();
$("#test2").toggle();
});
Essayez ici: http://jsfiddle.net/karim79/nreqv/1/
J'ai testé cela localement, et cela fonctionne. :) –
Pour tout le monde intéressé: https://github.com/jrelkin/jquery-watcher –
et alors quel sera le code ici? '//" this "dans cette portée fera référence à l'objet sur lequel la propriété a été modifiée" – GusDeCooL