JQuery: устал от css(). css(). css()

Я действительно устал от синтаксиса:

.css('position','absolute').css('z-index',z-index)
.css('border','1px solid #00AFFF').css('margin','-1px 0px 0px -1px')
.css('left',pleft)

Интересно, есть ли способ передать все параметры в одной функции, например:

.foo('position':'absolute','z-index':z-index,
     'border':'1px solid #00AFFF','margin':'-1px 0px 0px -1px',
     'left':pleft)

Очень ценю любую помощь.

Ответ 1

Да, передайте объект .css() (также указанный в документах):

.css({
    position: 'absolute',
    left: pleft,
    zIndex: 123
    ...
});

Обратите внимание, что вы можете использовать оба синтаксиса для ключей: zIndex, то есть версия для верблюжей, которую можно использовать непосредственно в JavaScript и 'z-index' (цитаты, необходимые как -, в противном случае нарушали бы).

Для вариантов, которые всегда одинаковы - в вашем случае, вероятно, position, border и margin - это может быть хорошей идеей для классического правила CSS, установленного с помощью селектора классов/идентификаторов. Тогда вам просто нужно установить оставшиеся (динамические) параметры с помощью .css().

Ответ 2

Определить стиль в отдельном классе

CSS

.myCustomClass
{
     position: absolute;
     border: 1px solid #00AFFF
}

И js

.addClass('myCustomClass');

И это очень просто для управления, если стили слишком сложны

Ответ 3

$(element).css({'position':'absolute','z-index':zIndex,
     'border':'1px solid #00AFFF','margin':'-1px 0px 0px -1px',
     'left':pleft});