Aidez-moi, s'il vous plaît. C'est une erreur lorsque j'utilise jQuery
dans ASP.NET MVC.
Uncaught TypeError: ((x.event.special [i.origType] || (valeur intermédiaire )). Handle || i.handler) .apply n'est pas une fonction Uncaught TypeError: ((x.event.special [i.origType] || (valeur intermédiaire )). Descripteur || i.handler) .apply n'est pas une fonction
Le code qui cause cela est:
$('#btnClick').click(function(){ //code })
Dans mon cas, l'erreur était due à la liaison d'événements à des fonctions qui n'existaient pas. J'avais supprimé des fonctions que je ne savais pas liées aux événements.
Voir l'extrait ci-dessous:
var foo = {
bar1: function(){
alert('working');
}
};
// Working
$('body').on('click', '.my-button', foo.bar1);
// Not Working because bar2 doesn't exist
$('body').on('click', '.my-button', foo.bar2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="my-button">Click me</span>
Il produira:
Uncaught TypeError: ((n.event.special [g.origType] || (valeur intermédiaire )). Handle || g.handler) .apply n'est pas une fonction
Si cela est utile à quiconque, cela peut aussi être dû au fait qu'une fonction de gestionnaire d'événements est déclarée deux fois.
Un de mes collègues a codé l'événement deux fois et je l'ai résolu (défi imbécile au fait).
Par exemple, si vous avez une faute de frappe:
$(document).on('change', '#selectInput').on('change', '#selectInput', function () {});
Doit être:
$(document).off('change', '#selectInput').on('change', '#selectInput', function () {});
Dans mon cas j'avais tapé
$('body').click('click','.delete_item',function(e){})
Quand j'avais voulu taper:
$('body').on('click','.delete_item',function(e){})
changer cette click
en on
a effacé l'erreur.
Dans mon cas, cela a fonctionné après la déclaration de la délégation dans $(document).ready( function() {})
;
J'ai rencontré le même problème récemment. J'ai trouvé que c'était mon erreur de gérer les événements JQuery. Au lieu de
$('#btnClick').click(function(){ //code })
Essaye ça,
$('#btnClick').on('click', function(){ //code })
Cela a fonctionné pour moi. J'espère que ça aide.
La seule solution pour moi était de renvoyer false
à la fin.
var button = $('<button>').click(function () {
// do something
return false;
});
Voir cette question . Cela avait à voir avec la propagation.
Une autre façon dont j'ai obtenu cette erreur est de mettre distraitement une fonction où un nom de fonction devrait aller:
faux:
$('.foo').click($('.bar').trigger('click'));
droite:
$('.foo').click(function () {
$('.bar').trigger('click');
});
aussi à droite:
$('.foo').click(triggerBarClick);
function triggerBarClick() {
$('.bar').trigger('click');
}
Pour moi, cela se produit lors du redimensionnement de la fenêtre. Mon collègue avait écrit un événement de redimensionnement sur un élément qu'il avait ensuite supprimé. Ainsi, lorsque vous redimensionnerez la fenêtre ultérieurement, jQuery recherchera l’élément et lançera une erreur s’il ne le trouve pas.
Dans mon cas "{passive: true}" a causé le problème:
$('#defaultSearchbar .dropdown-menu li').on('click', function () {
//Something here, not important
}, { passive: true });
Uncaught TypeError: ((i.event.special [f.origType] || {}). Handle || f.handler) .apply n'est pas une fonction
Fixé en l'enlevant:
$('#defaultSearchbar .dropdown-menu li').on('click', function () {
//Something here, not important
});
Je suppose que c'est un peu tard, mais à quiconque rencontre ce problème: vérifiez votre code html pour plusieurs importations jQuery. Toute importation supplémentaire risque de gâcher les handles/plugins/etc.
Avait la même erreur en déclarant des fonctions qui n'existaient pas encore, même si je ne les ai pas appelées simplement déclarés. Peut-être que c'est votre cas