Mon exigence est comme le chaînage de jquery avec une fonction définie par l'utilisateur
J'ai essayé le code suivant.
var content = $('<div />', {
'id': 'pia_editable_'
}).change(function(e) {
alert('change called');
}).condchain(some values);
function condchain(v) {
alert('hh');
}
Il lance une erreur de fonction non définie
p >
3 Réponses :
Mettez la fonction sur $ .fn à la place:
$.fn.condchain = function condchain(v) {
alert('hh');
}
var content = $('', { 'id': 'pia_editable_' })
.change(function(e) {
alert('change called');
})
.condchain(some values);
Tout ce que vous avez à faire est d'étendre les fonctions JQuery avec vos fonctions personnalisées comme dans le commentaire ci-dessus que vous pouvez utiliser
$ .fn.
pour étendre les fonctions natives de jQ
Veuillez consulter Que signifie $ .fn dans jQuery ? pour plus de détails.
Merci, Bon codage <3!
Pour que jQuery reconnaisse votre fonction, il doit être ajouté à $.fn.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class='div'>text</div> <div class='div'>text</div>
cela vous donne alors accès à ceci code> qui serait le contexte jquery actuel, par exemple:
$.fn.myFunc = function(txt) {
// this = jquery context
$(this).each(function(i, e) {
// this now = loop iteration
var that = $(this);
setTimeout(function() { that.text(txt) }, 500 * (i + 1));
});
return this;
};
$(".div").myFunc("changed").css("color", "red");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id='div'>text</div>
Pour ajouter un chaînage , il vous suffit de renvoyer this . Vous pouvez également utiliser $ (this) .each ... si vous voulez faire autre chose qu'une opération groupée, par exemple:
$.fn.myFunc = function(txt) { var that = this; setTimeout(function() { that.text(txt) }, 500); };
$("#div").myFunc("changed");
$.fn.condchan = function() { };
Vous pouvez faire plus pour créer un plugin réutilisable à part entière et cette page devrait être votre point de départ: https://learn.jquery.com/plugins/basic-plugin-creation/
J'ai essayé, mais j'ai toujours cette erreur. Uncaught TypeError: $ (...). Change (...). Condchain n'est pas une fonction sur PostItAll.create (jquery.postitall.js: 2417) sur PostItAll.init (jquery.postitall.js: 967) sur jquery .postitall.js: 656
Pouvez-vous créer un violon sur jsfiddle.net pour démontrer qu'il ne fonctionne pas?
Vous devez vous assurer que le code $ .fn.condchain est avant $ (..). Condchain () , exemple: jsfiddle.net/nojsfk5c (c'est après dans votre code d'origine)
Lisez l ' exemple minimal reproductible . Je ne demande pas votre bibliothèque, je demande un extrait de code qui démontre qu'elle ne fonctionne pas car j'ai fourni un extrait de code indiquant qu'elle fonctionne - alors voilà doit être quelque chose de différent dans votre code que vous ne nous avez pas dit