2014-12-04 3 views
0

У меня проблемы с мобильной Cordova с очень простой функцией, которая сначала устанавливает ширину/высоту для элемента, а затем работает на пролете внутри элемента (большой текстовый плагин - не связанные с этим плагином, хотя)jQuery CSS не запускается правильно на мобильном телефоне

<script type="text/javascript"> 
    $(".blockstart").each(function() { 
     $(this).css({ 
      "width": blockwidth, 
      "height": blockwidth 
     }); 
     alert("css change"); 
    }); 
    $(".blockstart").find("span").bigText(); 
</script> 

Что происходит:

  1. Css предупреждения для каждого blockstart элемента (хотя никаких видимых изменений на странице).

  2. Работы выполняются на элементе span, но не правы, поскольку родительский элемент не имеет набора с/высотой.

  3. Только теперь изменяется ширина/высота родительского (blockstart).

Это происходит только на мобильных. Это сводит меня с ума, любые предложения, пожалуйста?


Я даже попробовал следующую функцию, которая работает, но не все время (на мобильном телефоне).

  function runbigtext(div) { 
       var initbigtext = setInterval(function() { 
        if ($("" + div + "[style*='height']").length == $(div).length) { 
         clearInterval(initbigtext); 
         $(div).find("span").bigText(); 
        } 
       }, 50); 
      } 
      runbigtext(".blockstart"); 

Это иногда работает, иногда это не (Для того, чтобы работать должным образом, div.blockstart должна иметь ширину и высоту установить и быть видимым на странице с этими размерами. BigText функция работает, делая текст поверочного элемент внутри соответствует размеру родительского div.). Это происходит только на мобильных устройствах.

Я не могу объяснить, что происходит.

+3

Unrelated к тому, что вы просите о, ты знаешь вам не нужен каждый цикл? Если вы применяете ту же ширину и высоту ко всем элементам, вы можете вызвать '.css()' непосредственно на '$ (". Blockstart ")'. – nnnnnn

ответ

0

Просто простое решение, добавив задержку на работу, чтобы дать время для всех ваших таблиц стилей сделаны до вашей работы начинается

$(".blockstart").find("span").delay(1000).bigText(); 
0

Удалить предупреждение, у могут использовать консоль вместо и функции называют внутри каждый цикл прохождения $ это в качестве параметра, так что, если из-за медленного рендеринга процесс асинхронной не перекрывает этот

Просто вызовите функцию внутри каждого цикла и изменить CSS там,

Смежные вопросы