2010-09-14 22 views
6

He estado tratando de ocultar y mostrar el cuadro de selección imgAreaSelect dependiendo de si una casilla de verificación está marcada o no.jQuery imgAreaSelect hide/show?

He intentado:

var ias = $('#photo').imgAreaSelect({ instance: true }); 
    ias.setOptions({ show: false }); 

pero no parece hacer nada.

he tenido que recurrir a:

$('div.imgareaselect-selection').hide(); 
    $('div.imgareaselect-border1').hide(); 
    $('div.imgareaselect-border2').hide(); 
    $('div.imgareaselect-border3').hide(); 
    $('div.imgareaselect-border4').hide(); 
    $('div.imgareaselect-handle').hide(); 
    $('div.imgareaselect-outer').hide(); 

pero parece un poco engorroso y estoy seguro de que debe haber una mejor manera.

Respuesta

6

Debe actualizar la instancia después de cambiar las opciones - http://odyniec.net/projects/imgareaselect/usage.html#api-methods. Aunque, en verdad, no estoy seguro de si debería usar {hide: true} o {show: false}.

var ias = $('#photo').imgAreaSelect({ instance: true }); 
ias.setOptions({ hide: true }); 
ias.update(); 
+0

Para volver a mostrar, necesitaba usar ias.setOptions ({show: true}); Por alguna razón, falso como un valor dio resultados peculiares a medias. ¡Gracias! – Leo

5

Nunca utilicé imgAreaSeleccionarme, pero en el docs no hay ninguna opción show presente, pero una llamada hide. ¿Has intentado esto?

var ias = $('#photo').imgAreaSelect({ instance: true }); 
ias.setOptions({ hide: true }); 
ias.update(); 

Como BBonifield señala, parece que usted tiene que llamar update() después de cambiar las opciones.

otra posibilidad es utilizar:

$('div[class^=imgareaselect-]').hide(); 

Esto selecciona todos los div s que tienen una clase que comienza con "imageareaselect-" y los oculta.

+0

http://odyniec.net/projects/imgareaselect/usage.html#callback-functions sección 8, segundo fragmento de código ias.setOptions ({show: true}); – Leo

+0

¡Tu alternativa es ciertamente mejor que la mía! Algún día compraré un libro jQuery y lo leeré. – Leo

+0

Sí, acabo de verlo, parece ser la llamada 'update()' que falta entonces ...? – davehauser

2

No es una función de selección de cancelar en la API, a fin de utilizarlo como esto:

var ias = $('#photo').imgAreaSelect({ instance: true }); 
ias.cancelSelection(); 

BOOM!

0

Probé todas las opciones mencionadas aquí. Nada funcionó. Esperaba alguna llamada de API para hacerlo. Pero ninguno de ellos realmente funcionó.

que terminé haciendo manualmente así:

$(".imgareaselect-selection").hide(); 
$(".imgareaselect-outer").hide(); 
$(".imgareaselect-border1").hide(); 
$(".imgareaselect-border2").hide(); 

Mi estructura de la página es complejo. Esto parece hacer el truco.