Я никогда не слышал о транзакциях, используемых в том же контексте в качестве объяснения, что закрытие и здесь действительно нет никакой семантики транзакции.
Это назвало закрытие, потому что это "закрывается по" внешней переменной (константе) - т.е. это не просто функция, но и корпус среды, где функция была создана.
В следующем примере, называя закрытие g после изменения x также изменит значение x в g, с тех пор g завершения по x:
x = 0
def f():
def g():
return x * 2
return g
closure = f()
print(closure()) # 0
x = 2
print(closure()) # 4
Хотя я не уверен, почему вы хотите создавать классы CSS с помощью JavaScript, вот вариант:
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = '.cssClass { color: #F00; }';
document.getElementsByTagName('head')[0].appendChild(style);
document.getElementById('someElementId').className = 'cssClass';
У YUI самая лучшая утилита таблиц стилей , которую я когда-либо видел. Я рекомендую вам проверить это, но вот вкус:
// style element or locally sourced link element
var sheet = YAHOO.util.StyleSheet(YAHOO.util.Selector.query('style',null,true));
sheet = YAHOO.util.StyleSheet(YAHOO.util.Dom.get('local'));
// OR the id of a style element or locally sourced link element
sheet = YAHOO.util.StyleSheet('local');
// OR string of css text
var css = ".moduleX .alert { background: #fcc; font-weight: bold; } " +
".moduleX .warn { background: #eec; } " +
".hide_messages .moduleX .alert, " +
".hide_messages .moduleX .warn { display: none; }";
sheet = new YAHOO.util.StyleSheet(css);
Очевидно, существуют и другие, более простые способы изменения стилей на лету, например, предложенные здесь. Если они имеют смысл для вашей проблемы, они могут быть лучшими, но определенно есть причины, по которым изменение css является лучшим решением. Самый очевидный случай - это когда нужно изменить большое количество элементов. Другой важный случай - если вам нужно изменить стиль, чтобы задействовать каскад. Использование dom для изменения элемента всегда будет иметь более высокий приоритет. Это подход кувалды, эквивалентный использованию атрибута style непосредственно в элементе html. Это не всегда желаемый эффект.