2012-01-18 3 views
4

Я пытаюсь изменить цвет моего текста на моем меню LavaLamp Я использую следующий плагин http://www.queness.com/post/530/simple-lava-lamp-menu-tutorial-with-jqueryJQuery .css изменение цвета не работает

То, что я сделал это следующий

$('#lava').mouseleave(function() { 

    $('#lava li').removeClass('selected'); 
    $('#lava li').css({color: '#FFF'}); 
    //select the current item 
    $(this).addClass('selected'); 
    $(this).css("color", "white");  

}); 

однако когда мышь покидает он меняет весь текст на черный, который является правильным, но тогда $ (это) не меняются на белый

здесь является копией коды и рабочим дем

http://jsfiddle.net/aSr3J/

+2

Что такое $ (это) должно быть? Потому что, формируя свой код, он выглядит как $ (this), ссылаясь на элемент ul. Если вы хотите работать над ликой этой ul, я боюсь, ваш код неправильный ... – Jibou

+1

Можете ли вы предоставить JSFiddle? Ваш код выглядит действительным. – gdoron

+0

Можете ли вы сказать нам, чего вы пытаетесь достичь? – Jivings

ответ

1

Я полагаю, что вы после этого:

http://jsfiddle.net/aSr3J/20/

По сути ваша функция MouseLeave бы должны выглядеть так

$('#lava').mouseleave(function() { 

    left = Math.round($(".selected").offset().left - $('#lava').offset().left); 
    width = $(".selected").width(); 

    //Set the floating bar position, width and transition 
    $('#box').stop(false, true).animate({left: left},{duration:1000, easing: style}); 
    $('#box .head').stop(false, true).animate({width:width},{duration:1000, easing: style});  

}); 

Обратите внимание, что я также добавил определение цвета для ссылок в таблице стилей:

#lava ul a li { color:#fff; } 

(Вы знаете, что заключая блочные элементы, такие как li в инлайн-элементах, таких как a действительно только в HTML5 ?)

Что касается цвета текста меню я также внесены изменения в $('#lava li').hover(function()):

$('#lava li').hover(function() { 

    //Get the position and width of the menu item 
    left = Math.round($(this).offset().left - $('#lava').offset().left); 
    width = $(this).width(); 
    $(this).css("color","black"); 

    //Set the floating bar position, width and transition 
    $('#box').stop(false, true).animate({left: left},{duration:1000, easing: style}); 
    $('#box .head').stop(false, true).animate({width:width},{duration:1000, easing: style});  

//if user click on the menu 
},function() { $(this).css("color","white");}).click(function() { 

    //reset the selected item 
    $('#lava li').removeClass('selected'); 

    //select the current item 
    $(this).addClass('selected'); 

}); 
+0

Я не согласен Я хочу, когда запускается .mouseleave. Я хочу, чтобы он остался на последнем ли, когда он был включен, так как вы можете видеть по этому коду, он возвращается к .selected @Tomm – RussellHarrower

+0

Err ... ты потерял меня. Вы хотите, чтобы элемент меню активизировался после того, как мышь зависла над ним? Но предположим, что вы находитесь на главной странице, и вы наводите «Стать партнером», но не нажимаете на нее, вы все еще на главной странице. Почему вы хотите пометить ссылку «Стать партнером» как выбранная? – Tomm

0

Код почти наверняка неверен. Они ключевое слово «это» - волшебное зверь, который может измениться способами, которые очень удивляют программистов, используемых для других языков.

Сначала прочитайте это, чтобы понять, что это такое и как оно изменяется.

http://howtonode.org/what-is-this

И затем использовать функцию прокси Jquery (http://api.jquery.com/jQuery.proxy/) инкапсулировать «это» через функции.

$('#lava').mouseleave($.proxy(function() { 
    $('#lava li').removeClass('selected'); 
    $('#lava li').css({color: '#FFF'}); 
    //select the current item 
    $(this).addClass('selected'); 
    $(this).css("color", "white");  

}, this)); 
+0

К сожалению, весь текст остается белым http://jsfiddle.net/aSr3J/11/ – RussellHarrower

0

Попробуйте сделать это изменить цвет на парении каждого литий

// the follow preforms for loop on your li's 
$("#lava li").each(function(i) { 
     // this is the "hover" function, aka, mouseenter and mouseleave 
    $(this).hover(function(eIn) { // this function allows you to do stuff while mouse is over object 
     $(this).addClass('selected').css("color", "#FFF"); // FFF is white 
    }, 
    function(eOut) { // this allows you to do stuff when mouse leaves object 
     $(this).removeClass('selected').css("color", "#000"); // 000 is black 
    }); 
}); 
+0

Я пробовал это, и это не сработало. – RussellHarrower

+0

может ya gimmie больше кода для работы, как ваш html и, возможно, пример того, что вы хотите? Я еще не совсем понимаю вашу проблему. – SpYk3HH

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