Babak Bandpay
Babak Bandpay

Reputation: 177

FullCalendar event on mouseover gives jQuery error

In under the Week-view, on event mouseOver I receive this error message in firebug:

Error: Syntax error, unrecognized expression: ,
throw new Error( "Syntax error, unrecognized expression: " + msg );
jquery-1.8.3.js (line 4680)

has anyone encountered such a problem, or is there a way to debug to origins of the error?

Thanks in advance
Sincerely

Upvotes: 1

Views: 651

Answers (3)

Babak Bandpay
Babak Bandpay

Reputation: 177

The problem was caused by jQuery-Mobile. FullCalendar could not function properly in jQuery-Mobile environment. After going back to jQuery-UI everything worked fine again.

Thanks for your effort to help

Upvotes: 0

Babak Bandpay
Babak Bandpay

Reputation: 177

The problem was solved by going away from jQuery-Mobile and back to jQuery-UI only. FullCalendar doesn't work properly under jQuery-Mobile.

Upvotes: 0

Andreas Louv
Andreas Louv

Reputation: 47099

It looks like a selector bug:

$("abc, def, "); // or
$("<div,");

Is not sure.

If you look in the source code for jQuery 1.8.3 you will find these lines around line 4680:

/*LINE: 4679*/ Sizzle.error = function( msg ) {
/*LINE: 4680*/     throw new Error( "Syntax error, unrecognized expression: " + msg );
/*LINE: 4681*/ };

It's hard to debug your code from here but you could try to put arguments.callee.caller right before throw new Error:

Sizzle.error = function( msg ) {
    console.log( arguments.callee.caller );
    throw new Error( "Syntax error, unrecognized expression: " + msg );
};

That will tell you what function is calling this function. From there you can try to travel up using the same method. At the end you will find your problem.


What is arguments.callee.caller?

arguments is an array like property containing all the arguments parsed to a function:

function a() {}
a(1, 2, 3); // Inside a arguments will be: [1, 2, 3]

arguments have a property called callee this property contains a reference to the function called eg. it self:

function a() {} // arguments.callee === a.

arguments.callee have a non standard (but standard, just not described in ECMA) property called caller this property contains a reference to the function who is calling it on runtime.

function a() {
    b()
}
function b() {}; // arguments.callee.caller === a;

a();

And some docs:

Do you know about the console-object?

Upvotes: 2

Related Questions