J'ai ce petit plugin jQuery:Utilisez la méthode jQuery comme paramètre de rappel
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
(function($){
$.fn.foo = function(options){
var options = $.extend({
text: "Foo!",
}, options
);
this.prepend(
$("<span></span>").text(options.text)
).css({color: "white", backgroundColor: "black"});
return this;
};
})(jQuery);
$(function(){
$("div").foo().foo({text: "Bar!"}).css({border: "1px solid red"});
});
//--></script>
</head>
<body>
<div>One</div>
<div>Two</div>
<div>Three</div>
</body>
</html>
Maintenant, je veux l'améliorer afin que vous puissiez contrôler où le texte est inséré au moyen de fournir une fonction de rappel:
$(function(){
var optionsFoo = {
text: "Foo!",
insertionCallback: $.append
}
var optionsBar = {
text: "Bar!",
insertionCallback: $.prepend
}
$("div").foo(optionsFoo).foo(optionsBar).css({border: "1px solid red"});
});
(S'il vous plaît rappelez-vous ce code est juste échantillon. Je veux apprendre une technique plutôt que résoudre un problème.)
Puis-je passer une méthode jQuery comme argument et de l'utiliser à l'intérieur du plug-in i n au milieu d'une chaîne? Si oui, quelle est la syntaxe? Si non, quelle est l'alternative recommandée?
Mise à jour: myProgress jusqu'à présent
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
(function($){
$.fn.foo = function(options){
var options = $.extend({
text: "Foo!",
insertionCallback: $.append
}, options
);
options.insertionCallback.call(this, // options.insertionCallback is undefined
$("<span></span>").text(options.text)
).css({color: "white", backgroundColor: "black"});
return this;
};
})(jQuery);
$(function(){
var optionsFoo = {
text: "Foo!",
insertionCallback: $.append
}
var optionsBar = {
text: "Bar!",
insertionCallback: $.prepend
}
$("div").foo(optionsFoo).foo(optionsBar).css({border: "1px solid red"});
});
//--></script>
</head>
<body>
<div>One</div>
<div>Two</div>
<div>Three</div>
</body>
</html>
Pourriez-vous s'il vous plaît expliquer votre exemple un peu plus? Je ne peux pas saisir la syntaxe exacte. J'obtiens * options.insertionCallback est indéfini * peu importe ce que je fais. –
@ Álvaro G. Vicario: C'est parce que $ .prepend (ou $ .append) est indéfini. J'ai élaboré un peu plus dans la réponse. –
Vous pouvez accéder directement aux méthodes, '$ .fn.prepend';) –