Как 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 ()" метод, который создал контейнер только однажды и кэшировал его в статической переменной:)
Протестировано в FF / linux, FF / WinXp, IE / WinXp, Safari / WinXp:
basic:
или, показать и скрыть с эффектами анимации:
Пример 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')
Возможно, переместите div фильма с экрана. Установить его левое положение на -1000 или что-то в этом роде?
Затем заменить, когда другой div исчез?
Рабочее решение:
Используйте $ ('# myvideo'). Css ('visibility', 'hidden')
, чтобы скрыть и
$ (' #myvideo '). css (' visibility ',' visible ')
, чтобы показать div, содержащий видео.
Только что протестировал его с помощью firebug.
EDIT :
Обратите внимание, это отличается от .hide ()
и .show ()
, поскольку они используют display
css вместо видимости
].