Tormod Ndsn
Soy super novato y necesito un consejo rápido. He instalado un complemento emergente basado en javascript en mi sitio de wordpress, que se abre automáticamente cuando alguien visita el sitio. Para cerrar la ventana emergente, el usuario deberá hacer clic en una cruz X en la esquina de la ventana emergente.
Necesito editar el complemento para que el usuario pueda hacer clic EN CUALQUIER LUGAR y el complemento se cerrará.
Aquí está el código javascript que encontré. algún consejo sobre esto?
function open_lightbox(){
//var closebut = (typeof(ujiPopups) !== 'undefined' && ujiPopups != null && ujiPopups.showclose && ujiPopups.showclose == "true") ? true : false;
jQuery("#popup").modal({
onOpen: function (dialog) {
dialog.overlay.fadeIn('fast');
dialog.data.hide();
dialog.container.show('fast', function () {
dialog.data.fadeIn('slow');
});
},
autoResize: false,
autoPosition: true,
escClose: false,
zIndex: 999999,
overlayClose: false
});
}
function popups_close(){
jQuery.modal.close();
jQuery("#popup").remove();
}
stuart kershaw
Algo como esto debería hacerlo:
$(document).click(function() {
if($('#popup').is(':visible')) {
popups_close();
}
});
Si desea mantener el modal activo en la interacción con la ventana emergente:
$(document).click(function(e) {
if (!$(e.target).is("#popup")) {
if ($('#popup').is(':visible')) {
popups_close();
}
}
});
Un ejemplo simple aquí: http://jsfiddle.net/wnT4G/
*Consulte los comentarios para ver algunas revisiones elegantes de @ComFreek
-
¿Esto también cierra el cuadro de diálogo si uno hace clic en el cuadro de diálogo?
– ComFreek
1 de noviembre de 2013 a las 13:56
-
Supuse que era la intención ya que la pregunta no indica lo contrario. Agregaré una solución.
– Stuart Kershaw
1 de noviembre de 2013 a las 13:56
-
Su segundo ejemplo no funcionará porque
$(document).not('#popup').length == 0
(jsviolín).– ComFreek
1 de noviembre de 2013 a las 14:21
-
Gracias @ComFreek, arreglando.
– Stuart Kershaw
1 de noviembre de 2013 a las 14:34
-
Lamento molestarlo nuevamente, pero su solución aún tiene errores. Caso de prueba: jsfiddle.net/wnT4G/4 (haga clic en
<span>blub</span>
). Aquí hay una soluciónpero usar el burbujeo de eventos sería más elegante en mi opinión: jsfiddle.net/wnT4G/2– ComFreek
1 de noviembre de 2013 a las 14:43
BordiArt
Yo uso un método bastante extraño, pero funciona:
$('.click-btn').click(function(){
$('.modal').show(); //show popup
})
$('body').click(function(){
$('.modal').hide(); //hide modal
})
$('.click-btn, .modal').click(function(e){
e.stopPropagation; // don't close modal by clicking inside modal and by clicking btn
})
evento de usuario
function addEvent(action) {
$("body").click(function() { action();});
}
function clearEvent() {
$("body").off('click');
}
Quieres hacer esto:
$(document).click(function()
{
popups_close();
})
$('Your selector of the popup').click(function(e)
{
e.stopPropagation();
})
.stopPropagation();
en realidad cancelará el .click()
función que se activó al hacer clic en el documento. Entonces, cada vez que haga clic en cualquier parte del documento, la ventana emergente se cerrará, excepto cuando haga clic en la ventana emergente.
¡Espero que esto haya ayudado!
Creo que solo quieres establecer overlayClose
y posiblemente escClose
a la verdad Su complemento probablemente crea una superposición en la página para que los usuarios no puedan hacer clic en ningún otro lugar, así que supongo overlayClose: true
obtendrá el complemento para cerrar el cuadro de diálogo cuando se haga clic en la superposición.
escClose: true,
overlayClose: true
No estoy seguro de qué plugin estás usando, pero Éste usa un clickClose
propiedad.
Tenga en cuenta que esto es
javascript
nojava
. Están muy cosas diferentes. He editado tu pregunta por ti.–Rory McCrossan
1 de noviembre de 2013 a las 13:49
ah ok gracias por ayudar 🙂
– Tormod Ndsn
1 de noviembre de 2013 a las 13:51
¿Usar CSS para cerrar una ventana emergente?
– putvande
1 de noviembre de 2013 a las 13:53
posible duplicado del evento jQuery click off element
–André Dion
1 de noviembre de 2013 a las 13:58