2015-03-28 5 views
2

Я разрабатываю редактор CSS и хочу предоставить возможность изменять стиль для <button>, когда он щелкнут. Следующий код не изменяет background-color на желтый.Изменить: активный стиль псевдокласса с jQuery

http://jsfiddle.net/65erbrhh/

$('a').click(function() { 
    event.preventDefault(); 
    $('button:active').css('background-color', 'yellow'); 
}); 

Edit: В моем случае, я не могу назначить определенный класс на кнопку, потому что пользователь настраиваемый HTML.

+0

Итак, как вы деактивируете кнопку в своем случае? CSS? – callback

+0

Не нужно деактивировать, пользователь может использовать одни и те же цвета для состояния ': active' –

ответ

3

Поскольку вы не можете выбирать элементы на основе их CSS состояния, один из вариантов было бы добавить класс к элементу:

Updated Example

$('a').click(function (e) { 
    e.preventDefault(); 

    $('button').addClass('active-style'); 
}); 
button.active-style:active { 
    background-color: yellow; 
} 

Но поскольку вы сказали, что не можете этого сделать, вы можете в качестве альтернативы подключить прослушиватель событий для mousedown/mouseup событие и изменить цвет фона соответственно:

Updated Example

$('a').click(function() { 
    event.preventDefault(); 

    $('button').on('mousedown mouseup', function (e) { 
     $(this).css('background-color', e.type === 'mousedown' ? 'yellow' : ''); 
    }); 
}); 

.. если вы хотите пример работать, если вы mouseupвне от button элемента, вам нужно будет слушать всеmouseup события:

Updated Example

$('a').click(function (e) { 
    e.preventDefault(); 

    $('button').addClass('active-style'); 
}); 

$(document).on('mousedown mouseup', function (e) { 
    var color = (e.type === 'mousedown' && $(e.target).hasClass('active-style')) ? 'yellow' : ''; 
    $('button.active-style').css('background-color', color); 
}); 
+0

В вашем коде вы нацеливаете' button' 'на mouseup' и' на мышь вниз ', в то время как это 'a' он хочет. – callback

+2

K good (+1) работает сейчас - :) –

+0

Это работает для примера jsfiddle, однако есть интересное исключение, и я должен был упомянуть об этом в моем OP. Если я применяю обычный стиль для 'button' с jQuery, он игнорирует стиль, указанный в общем определении css. http://jsfiddle.net/feq71wdh/1/. Это не связанная с этим проблема, но меня это беспокоит. =) –

Смежные вопросы