usar sweet llenar con como carga bootstrap asincrona javascript jquery resize window

javascript - sweet - Problema con la función dentro de $(ventana).resize-usando jQuery



sweet alert (1)

Quiero usar una función simple para ocultar / mostrar contenido solo en dispositivos móviles.
La función en sí es bastante simple. Yo uso este código aquí para eso:

$(''.toggleMobile'').click(function() { var hideableContent = $(this).parent().find(''.hideable''); hideableContent.slideToggle(''medium''); });

Entonces ... nada elegante, lo sé.

Se vuelve más complicado a medida que trato de detectar la ventana del navegador.
Creo que me encargué de eso usando las siguientes líneas (probablemente encontrarás formas de mejorarlo):

function whatMedia() { var viewport = $(window).width(); var mediaType; if ( viewport < 767 ) mediaType = ''mobile''; else if ( (viewport >= 767) && (viewport < 991) ) mediaType = ''tablet''; else mediaType = ''desktop''; return mediaType; }

Ahora solo necesito una función que se activa solo cuando la ventana gráfica es mobile (¿quizás el problema está aquí?):

function toggleMobile(mediaType) { if ( mediaType === ''mobile'' ) { $(''.toggleMobile'').click(function() { var hideableContent = $(this).parent().find(''.hideable''); hideableContent.slideToggle(''medium''); }); } }

No tengo problemas para verificar la ventana la primera vez que se carga la página. Solo uso esto (código muy simple):

// Check media type and activate accordingly var mT = whatMedia(); toggleMobile(mT);

Hasta aquí todo bien. Ahora viene la parte divertida:
Quiero ser capaz de detectar si un usuario cambia el tamaño de la ventana del navegador y activar / desactivar la función toggleMobile() consecuencia. .

Yo podría hacer esto:

$(window).resize(function() { var mT = whatMedia(); toggleMobile(mT); }

Como quizás ya sepas, esta $(window).resize hace que Webkit y otros navegadores se vuelvan un poco locos, y repiten la función siempre y cuando el usuario cambie el tamaño de la ventana.
Esto es bueno o malo dependiendo de su opinión sobre él.
Personalmente, no quiero que esto suceda, así que uso esta función que encontré en los foros :

var waitForFinalEvent = (function () { var timers = {}; return function (callback, ms, uniqueId) { if (!uniqueId) { uniqueId = "Don''t call this twice without a uniqueId"; } if (timers[uniqueId]) { clearTimeout (timers[uniqueId]); } timers[uniqueId] = setTimeout(callback, ms); } })();

Mi evento de cambio de tamaño se ve así:

$(window).resize(function() { waitForFinalEvent(function() { var mT = whatMedia(); toggleMobile(mT); }, 500, ''1''); }

Esto ciertamente retrasa el cálculo de la ventana del navegador al redimensionar, pero no puedo hacer que funcione la función dentro de él.
No sé cuál es el problema :(
La función Th se dispara dos o más veces, e incluso cuando la ventana gráfica se reconoce como desktop o tablet .


En la función togglemobile, solo registra el evento Click pero nada más, si desea activarlo puede hacer

$(''.toggleMobile'').click(function() { var hideableContent = $(this).parent().find(''.hideable''); hideableContent.slideToggle(''medium''); }).trigger(''click'');

esto activaría el evento click y ejecutaría el código, alternativamente podría ocultar el elemento de inmediato.

EDITAR: Revisaré mi respuesta un poco. Primero registramos el evento click para el elemento que, mientras slide, cambia el contenido:

$(''.toggleMobile'').click(function() { if(whatMedia() === "mobile") { var hideableContent = $(this).parent().find(''.hideable''); hideableContent.slideToggle(''medium''); } });

luego en toggleMobile(mt); función que ahora ocultamos el contenido si el tamaño pasa a los medios móviles

function toggleMobile(mediaType) { if ( mediaType === ''mobile'' ) { var hideableContent = $(".toggleMobile").parent().find(''.hideable''); hideableContent.slideToggle(''medium''); } }

esto es si entiendo, ¿qué quieres?

Veo que esto es probablemente lo que significó @ sje397.