jQuery скрывает отделение, которое содержит флэш-память, не сбрасывая его

Как Marius, на которого уже указывают, у Вас могут быть общедоступные статические переменные в функциях.

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

Вот пример моего старого "одноэлементного" подхода:

var singleton = function(){ 

  if (typeof arguments.callee.__instance__ == 'undefined') { 

    arguments.callee.__instance__ = new function(){

      //this creates a random private variable.
      //this could be a complicated calculation or DOM traversing that takes long
      //or anything that needs to be "cached"
      var rnd = Math.random();

      //just a "public" function showing the private variable value
      this.smth = function(){ alert('it is an object with a rand num=' + rnd); };

   };

  }

  return arguments.callee.__instance__;

};


var a = new singleton;
var b = new singleton;

a.smth(); 
b.smth();

, Как можно видеть, в обоих случаях конструктор выполняется только однажды.

, Например, я использовал этот подход назад в 2004, когда я должен был создать модальное диалоговое окно с серым фоном, который покрыл целую страницу (что-то как Лайтбокс ). Internet Explorer 5.5 и 6 имеет самый высокий контекст укладки для < select> или < iframe> элементы из-за их "оконного" характера; таким образом, если страница содержавшие избранные элементы, единственный способ покрыть их состоял в том, чтобы создать iframe и расположить ее "на вершину" страницы. Таким образом, целый сценарий был довольно сложным и немного медленным (он использовал фильтр: выражения для установки непрозрачности для покрытия iframe). Сценарий "контейнера" имел только один ".show ()" метод, который создал контейнер только однажды и кэшировал его в статической переменной:)

5
задан Hellnar 1 December 2009 в 12:11
поделиться

3 ответа

Протестировано в FF / linux, FF / WinXp, IE / WinXp, Safari / WinXp:

  • поместите ваш флэш-контейнер DIV в новый DIV с переполнением: скрыто .

basic:

  • , чтобы скрыть flash-div: $ ('# id_div_with_swf'). Css ("left", "- 2000px");
  • , чтобы показать flash-div: $ ('# id_div_with_swf') .css ("left", "0px");

или, показать и скрыть с эффектами анимации:

  • , чтобы скрыть flash-div: $ ('# id_div_with_swf'). animate ({left: "-2000px" }, 1000);
  • , чтобы показать flash-div: $ ('# id_div_with_swf'). Animate ({left: "0"}, 1000);

Пример HTML:

<div style="width:200px; height:100px; overflow:hidden;">
<div id="id_div_with_swf" style="width:200px; height:100px; position:relative; left:0px; top:0px;">
<!-- flash here -->
</div>
</div>

вы не можете получить кроссбраузерное рабочее решение с .css ('visibility', 'visible' / 'hidden')

10
ответ дан 18 December 2019 в 06:50
поделиться

Возможно, переместите div фильма с экрана. Установить его левое положение на -1000 или что-то в этом роде?

Затем заменить, когда другой div исчез?

5
ответ дан 18 December 2019 в 06:50
поделиться

Рабочее решение:

Используйте $ ('# myvideo'). Css ('visibility', 'hidden') , чтобы скрыть и
$ (' #myvideo '). css (' visibility ',' visible ') , чтобы показать div, содержащий видео.

Только что протестировал его с помощью firebug.

EDIT : Обратите внимание, это отличается от .hide () и .show () , поскольку они используют display css вместо видимости ].

8
ответ дан 18 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: