2011-02-08 7 views
2

я хочу, чтобы переключаться между конструкциямиcss toggleClass в jquery?

/* Heart sign */ 
.fav { 
    margin-left: 0px; 
    color: #0099CC; 
    padding-left: 20px; 
    padding-right: 4px; 
    padding-bottom: 4px; 
    -moz-border-radius: 5px; 
    border-radius: 5px; 
    background: url(../images/heart-icons.png) no-repeat 4px 4px; 
} 

fav:hover { 
    cursor: pointer; 
    margin-left: -1px; 
    margin-right: -1px; 
    background-color: #EDEDED; 
    border: 1px solid #999999; 
    background: url(../images/heart-icons.png) no-repeat 4px -13px #EDEDED; 
} 

JQuery:

$('.fav').live('click', function(e){ 

    $(this).toggleClass('fav:hover'); 

    }); 

, но это не работает !!! любая помощь пожалуйста

+0

Я думал дать fav: навести другое имя, чтобы знать jquery, но тогда я могу потерять эффект зависания, но я хочу, когда пользователь нажимает на .fav, чтобы принять состояние зависания, если это имеет смысл. – getaway

ответ

3

Думаю, вам, вероятно, придется дублировать. Сохраните наведение, а затем добавьте еще один класс, который будет иметь тот же стиль, что и: hover, а затем переключить этот класс.

Благословит Бог!

+2

Вам не нужно дублировать. Вы можете просто добавить другое имя класса.fav: hover –

4

Решение без Javascript:

.fav:hover, .fav:active { 
    ... 
} 

Также обратите внимание, что я установил .fav.

+0

Используют ли они его по ссылке? getaway не говорит, и я не думаю, что это совместимо с браузером для элементов, отличных от ссылок. –

3

Как и Тринидад, вам нужно сделать дубликат, но не нужно копировать пасту. Просто сделайте это:

/* Heart sign */ 
.fav { 
    margin-left: 0px; 
    color: #0099CC; 
    padding-left: 20px; 
    padding-right: 4px; 
    padding-bottom: 4px; 
    -moz-border-radius: 5px; 
    border-radius: 5px; 
    background: url(../images/heart-icons.png) no-repeat 4px 4px; 
} 

.fav:hover, 
.fav-clicked { 
    cursor: pointer; 
    margin-left: -1px; 
    margin-right: -1px; 
    background-color: #EDEDED; 
    border: 1px solid #999999; 
    background: url(../images/heart-icons.png) no-repeat 4px -13px #EDEDED; 
} 

, то вы можете установить его в JQuery:

$('.fav').live('click', function() { 
    $(this).toggleClass('.fav-clicked'); 
}) 

(только придумать более семантического название клике)

Это, в свою очередь, сделает ваш DIV (или любой HTML элемент с избрами) выглядят следующим образом:

<div class="fav"> <-- before clicking 

нажмите

<div class="fav fav-clicked"> 

нажми

<div class="fav"> 

Если вам нужно сделать некоторые AJAX запросов на ваши избры клики пунктов, просто получить доступ к избрам клики детали:

$('.fav-clicked') 
+0

спасибо за ответ, как я могу также сказать, какой переключатель был использован, поэтому я могу отправить каждое действие другому запросу ajax, если вы знаете, что я имею в виду! – getaway

+0

Ну, это именно тот способ, которым кто-то, кто действительно знает CSS, сделает это. Я все еще нахожусь в прошлом. = P – Trinidad

+0

im не уверен, что вы имеете в виду, но метод toggleclass добавляет класс «fav-clicked» в ваш div с классом «fav» (если он его не имеет) или удаляет fav-clicked if fav уже есть это. плохо обновляю мой ответ, чтобы быть более понятным – corroded

3

Первых из всего, что у вас есть ошибка в CSS. fav:hover должно быть .fav:hover (обратите внимание на период).

Во-вторых, я думаю, не думаю, что вы можете сделать это именно так, как у вас есть. Вместо этого вы можете изменить CSS для:

.fav:hover, .fav_hover { 

А затем изменить JS для:

$(this).toggleClass('fav_hover'); 

Я не думаю, что вы можете сказать Jquery использовать класс парения псевдо.

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