2015-08-26 16 views
34

Bitte helfen Sie mir. Das ist ein Fehler, wenn ich jQuery in ASP.NET MVC verwende.Uncaught TypeError: ((x.event.special [i.origType] || (Zwischenwert)). Handle || i.handler) .apply ist keine Funktion

Uncaught TypeError: ((x.event.special[i.origType] || (intermediate value)).handle || i.handler).apply is not a function Uncaught TypeError: ((x.event.special[i.origType] || (intermediate value)).handle || i.handler).apply is not a function

Der Code, der dies verursacht:

$('#btnClick').click(function(){ //code }) 

This is an image of the error

+1

Tut es das, wenn Sie die minimierte JQuery nicht verwenden? Tut es das auch, wenn die Click-Call-Back-Funktion gerade zurückkehrt? –

+0

Wahrscheinlich nicht viel Hilfe, aber ich habe festgestellt, dass jemand ein unvollständiges Klick-Ereignis eingecheckt hat: '$ ('body') on ('click', '. Button') Ich entfernte den fehlerhaften Code und alles ist in Ordnung! –

+0

Überprüfen Sie, ob Sie eine 'undefinierte' Funktion innerhalb des 'click'-Ereignishandlers aufrufen – ASK

Antwort

0

Ich denke, es ein wenig spät ist, sondern jemand dieses Problem zu begegnen: Ihre HTML-Code für mehrere jquery Importe überprüfen. Jeder zusätzliche Import kann zuvor registrierte Handles/Plugins/etc durcheinander bringen.

8

Wenn dies für andere hilfreich ist, kann dies auch daran liegen, dass eine Ereignishandlerfunktion zweimal deklariert wird.

Ein Kollege von mir codiert das Ereignis zweimal als 'an' und ich löste (Fool Challenge übrigens). wenn

Zum Beispiel haben Sie einen Tippfehler:

$(document).on('change', '#selectInput').on('change', '#selectInput', function() {}); 

werden müssen:

$(document).off('change', '#selectInput').on('change', '#selectInput', function() {}); 
1

ich das gleiche Problem aufgetreten kürzlich. Ich habe festgestellt, dass es mein Fehler war, jQuery-Ereignisse zu verarbeiten. Statt

$('#btnClick').click(function(){ //code }) 

Try this,

$('#btnClick').on('click', function(){ //code }) 

Es ist für mich gearbeitet. Ich hoffe es hilft.

+1

Dies sollte keinen Unterschied machen. Ersteres ist nur ein Alias ​​für Letzteres. –

+1

... nun, das ist ein bisschen gefährlich zu unterstellen, dass sie gleich sind; wenn der spätere für nachfolgende Instanzen des Selektors funktioniert. – doublejosh

28

In meinem Fall wurde der Fehler durch das Binden von Ereignissen an Funktionen verursacht, die nicht vorhanden waren. Ich hatte Funktionen entfernt, von denen ich nicht wusste, dass sie an Ereignisse gebunden waren.

Siehe Schnipsel unten:

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>

Es wird produzieren:

Uncaught TypeError: ((n.event.special[g.origType] || (intermediate value)).handle || g.handler).apply is not a function

+0

Das gleiche für mich, auch wenn die Bindung mit der fehlenden Funktion für ein anderes Ziel (d. H. "My-Button2") war. –

+0

Das hat gerade meine geistige Gesundheit gerettet! :) –

0

Für mich dies geschieht, wenn die Größe des Fensters. Mein Kollege hatte ein Größenänderungs-Ereignis auf ein Element geschrieben, das er später entfernte. Wenn Sie später die Größe des Fensters ändern, sucht jQuery nach dem Element und gibt einen Fehler aus, wenn es nicht gefunden werden konnte.

1

Eine andere Art, wie ich diesen Fehler bekommen haben durch absentmindedly eine Funktion setzen, wo ein Funktionsnamen gehen sollte:

falsch:

$('.foo').click($('.bar').trigger('click')); 

rechts:

$('.foo').click(function() { 
    $('.bar').trigger('click'); 
}); 

auch rechts:

$('.foo').click(triggerBarClick); 

function triggerBarClick() { 
    $('.bar').trigger('click'); 
} 
-1

Das Binden mehrerer Ereignisse an eine einzelne ID oder Klasse oder das falsche Binden von Ereignissen kann dieses Problem verursachen.

In meinem Fall hatte ich diesen Fehler aufgrund dieser Fehler:

$('body').on('change', '.btnAddNewRow').click(function() { 
1

In meinem Fall ist es innerhalb $(document).ready(function() {}) nach Deklarieren der Delegation arbeitet;

2

In meinem Fall hatte ich

getippt
$('body').click('click','.delete_item',function(e){}) 

Wenn ich tippe hatte gemeint:

$('body').on('click','.delete_item',function(e){}) 

ändert, dass click zu on den Fehler entfernt.

1

Ich hatte ein Ereignis für einen Selektor gebunden, der nicht mehr existierte.

$(document).on('click', '.js-test', App.test);

Ich löschte den .js-test div und vergessen. Das verursachte den Fehler an meinem Ende.

Verwandte Themen