jQuery.data()
атрибуты фактически не хранятся в объекте DOM в jQuery. Объект DOM помечен уникальным идентификатором jQuery, а фактические данные хранятся в отдельной структуре данных javascript. Среди прочих причин jQuery делает это таким образом, чтобы предотвратить ошибки утечки памяти с циклическими ссылками, которые могут возникать в некоторых браузерах, когда значения данных являются ссылками на другие объекты DOM.
Если вы хотите изменить фактический атрибут DOM, я бы посоветовал установить атрибут непосредственно себе так:
obj.attr("data-myplugin-object", "red-window");
Хотя для того, что вы делаете, я думаю, что большинство людей будет использовать добавление / удаление / изменение имен классов CSS, а не пользовательских атрибутов, поскольку это обычный способ изменения правил CSS, применяемых к объекту.
<div id="myObj" class="blueWindow">
<p>Hello world</p>
</div>
.blueWindow {background-color: #00F;}
.redWindow {background-color: #F00;}
$("#myObj").removeClass("blueWindow").addClass("redWindow");
Или, если на объекте нет других классов:
$("#myObj").attr("class", "redWindow");