Error de syntax no detectada, expresión no reconocida:

Trabajando actualmente en el control de noticias – vea mi ejemplo en vivo aquí – EJEMPLO

Cuando presiono la flecha siguiente / anterior, Uncaught Syntax error, unrecognized expression: [object Object] un registro de error Uncaught Syntax error, unrecognized expression: [object Object]

¿Por qué es el problema? ¿Dónde está el error en la syntax?

Código jQuery:

  (function($) { /*! Scroller ---------------------------------------------*/ $.fn.Scroller = function() { //Set height $('.scroller').each(function() { var height = 0; $(this).children('div').each(function() { if (height  div:first-child').show(); //Scroller $('.scroller').Scroller(); }); 

Para construir selectores a partir de objetos existentes, use el segundo parámetro de $ :

 $('div:visible', CurrentScrollerDiv) 

O la función de find :

 CurrentScrollerDiv.find('div:visible'); 

CurrentScrollerDiv no es una cadena por lo que no se puede concatenar con una cadena para generar un argumento de selector basado en la cadena.


 jQuery( selector, [ context ] ) jQuery( selector, [context] ) <-- you want this one, and jQuery( element ) `selector` is a string jQuery( elementArray ) jQuery( jQuery object ) jQuery() jQuery( html, [ ownerDocument ] ) jQuery( html, [ownerDocument] ) jQuery( html,props ) jQuery( callback ) jQuery( callback ) 

Esta es la línea problemática:

 if ($(CurrentScrollerDiv + ' div:visible').is(CurrentScrollerDiv + ' div:last-child')) { 

Está utilizando la concatenación de cadenas en CurrentScrollerDiv , que .toString() es la variable, que no es en absoluto lo que desea. No intente concatenar cadenas de objetos jQuery o elementos DOM. Use jQuery’s .find() lugar:

 if (CurrentScrollerDiv.find('div:visible').is(CurrentScrollerDiv.find('div:last-child')) { 

Sin embargo, es casi seguro que hay una forma más eficiente de escribir esa statement if .

Aquí está el selector equivocado:

 var CurrentScrollerDiv = $(this).parent().find('.scroller'); $(CurrentScrollerDiv + ' div:visible') 

fijar

 var CurrentScrollerDiv = $(this).parent().find('.scroller'); $('div:visible', CurrentScrollerDiv);