Это ориентировано на многопотоковое исполнение без любой потребности в блокировке. Строки являются ссылочными типами, поэтому только ссылка на строку изменяется. Ссылки имеют тип, как, гарантируют, будут атомарными (Int32 в системах на 32 бита и Int64 на 64 битах).
jQuery предоставляет концепцию контейнера свойств с помощью метода data
.
// set some arbitrary data
$('#selector').data('example-property', exampleValue);
// get the value later
var theValue = $('#selector').data('example-property')
Это позволяет избежать манипуляций с DOM, которые могут быть дорогостоящими с точки зрения производительности.
Функция $ создает объект jquery, представляющий элемент dom. Вы можете изменить атрибуты объекта, но эти изменения не будут сделаны родительскими в элементе, который он «представляет», если jquery не знает, что с ними делать (возможно, назначив обработчик события щелчка).
Итак, когда вы делаете При первом выборе он изменяет созданный вами объект, но ничего не делает с фактическим элементом html. Когда вы снова запускаете $, он создает ОТДЕЛЬНЫЙ объект, который не сохраняет изменение атрибута, которое вы сделали для первого.
вы можете внести прямые изменения в объект html: (без jquery)
getElementByID ("theid"). Myprop = "hello world";
в результате:
но установка атрибута объекта jquery просто не поможет. Чтобы получить эквивалентный эффект в jquery, используйте метод .data, который предложил Кен Браунинг. (снова поздно ...): D