Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery поменять CSS цвет для текста при наведении мышью (.text:hover) (https://javascript.ru/forum/jquery/3194-jquery-pomenyat-css-cvet-dlya-teksta-pri-navedenii-myshyu-text-hover.html)

JooZ 26.03.2009 17:42

jQuery поменять CSS цвет для текста при наведении мышью (.text:hover)
 
Здравствуйте)

В стиле есть строка
Код:

.new_title:hover {color: #0000FF;}
как в jQuery сменить цвет для этого свойства?
$('hover.new_title').css('color','#707070');
$('.new_title:hover').css('color','#707070');


Первый вариант не меняет.
Второй - выдает ошибку (Объект не поддерживается)

IIIEPJIOK 26.03.2009 19:16

прошу прощения, но не смог удержаться от вопроса : А за чем использовать для этого jQuery?

JooZ 27.03.2009 08:58

А почему бы и нет? )

В принципе, я не против других вариантов...
Если можна еще как-то на лету менять это свойство, не стесняйтесь, рассказывайте)

IIIEPJIOK 27.03.2009 09:25

Цитата:

А почему бы и нет? )
потому, что задача по
Цитата:

цвет для текста при наведении мышью
решается одной строчкой, а не библиотекой в тысячу строк кода.....
хотя каждый удовлетворяется, как ему нравится ;-)
читаем, думаем, решаем, что удобней

JooZ 27.03.2009 10:38

Ну неужели вы думаете что я прикрутил jQuery только для того, чтобы поменять одно свойство? )

Теперь объясните пожалуйста, как с помощью
document.getElementById("id").style.property="value"

изменить цвет при наведении мышью.

IIIEPJIOK 27.03.2009 11:20

Ну неужели вы думаете что я прикрутил jQuery только для того, чтобы поменять одно свойство? )

Уверен, что это будет супер-мега-крутая штука :)
Прежде чем хвататься за jQuery
читаем это, потом это, и если после это останутся вопросы, то можно и это

и у вас не останется вопросов по этой теме :)

x-yuri 27.03.2009 17:45

JooZ, зачем для этого jquery? Css твою проблему не решает?

JooZ 28.03.2009 01:08

Не решает.
Потому что пользователь сам выбирает цвета, размер шрифта и другие свойства для своего блока. И после смены какого-то одного свойства надо сразу-же изменить его в блоке, чтобы юзер видел, чего он натворил.

x-yuri 28.03.2009 03:00

вижу 3 варианта:
1) с помощью hover назначаешь 2 обработчика, которые изменяют/восстанавливают цвет элемента
2) прописываешь классы соответствующие цветам и в javascript просто изменяешь класс (если классов оказется не много)
3) используешь api для работы с таблицами стилей (не знаю насколько это кросс-браузерно), пример использования:
// Get the first stylesheet of the document
var ss = document.styleSheets[0];

// Get the rules array using W3C or IE API
var rules = ss.cssRules?ss.cssRules:ss.rules;

// Iterate through those rules
for(var i = 0; i < rules.length; i++) {
    var rule = rules[i];
    // Skip @import and other nonstyle rules
    if (!rule.selectorText) continue;

    // This is the text form of the rule
    var ruleText = rule.selectorText + " { " + rule.style.cssText + " }";

    // If the rule specifies a margin, assume it is in pixels and double it
    var margin = parseInt(rule.style.margin);
    if (margin) rule.style.margin = (margin*2) + "px";
}

Dobrak 08.11.2010 21:34

Цитата:

Сообщение от JooZ (Сообщение 15300)
Здравствуйте)

В стиле есть строка
Код:

.new_title:hover {color: #0000FF;}
как в jQuery сменить цвет для этого свойства?
$('hover.new_title').css('color','#707070');
$('.new_title:hover').css('color','#707070');


Первый вариант не меняет.
Второй - выдает ошибку (Объект не поддерживается)

Я подобную дилемму решил вот так:

$(document).ready(function(){
		$(".price").find("tr").hover(function() {
			$(this).toggleClass("color");
		}, function() {
			$(this).toggleClass("color");
		});
	});


Надеюсь комунить поможет :)

subzey 08.11.2010 23:27

Ох-ох! А нельзя просто добавить в документ объект style с нужным цссным правилом внутри?
Приоритетность у селекторов одинаковая, так что, тот набор правил, который в документе позже, перекроет тот, что раньше.

x-yuri 09.11.2010 04:04

я думаю, Dobrak решал несколько другую задачу, а именно, "как сделать ...:hover {} с помощью jQuery" ;)

monolithed 09.11.2010 07:57

На мой взгляд самое просто решение:
<style type="text/css">
a {color: red;}
.color {color: black;}
</style>

<a href="#" class="color">наведи</a>

<script type="text/javascript">
$(function(){
      $('a').hover(function(){
            $(this).toggleClass('color');
     });
})
</script>

x-yuri 09.11.2010 10:11

monolithed, подразумевается, что .color {color: black;} добавляется динамически? Зачем здесь jQuery?

p.s. а когда пользователь уберет мышь?

monolithed 09.11.2010 10:19

Цитата:

Сообщение от x-yuri
monolithed, подразумевается, что .color {color: black;} добавляется динамически?

да

Цитата:

Сообщение от x-yuri
Зачем здесь jQuery?

В данном случае абсолютно бессмысленно, но если использоваться будет элемент отличный от a? то есть смысл в этом подходе

Цитата:

Сообщение от x-yuri
p.s. а когда пользователь уберет мышь?

цвет вернется в начальное значение

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<style type="text/css">
a {color: red;}
.color {color: black;}
</style>

<a href="#" class="color">наведи</a>

<script type="text/javascript">
$(function(){
      $('a').hover(function(){
            $(this).toggleClass('color');
     });
})
</script>

x-yuri 11.11.2010 09:42

Цитата:

Сообщение от monolithed
цвет вернется в начальное значение

хм, не знал о синтаксе с одним callback'ом. Наверное, где-то после v1.4 появился...

Dobrak 15.11.2010 19:56

У меня функция цепляется практически к любому элементу с классом ".price" (DIV, TR, P, SPAN и т.д.)

А главное люблю когда код красивый и если пишу с использованием JQuery на сайте - то предпочитаю все функции на нём реализовывать, чтоб код не запутывать ...

Спасибо monolithed у меня второй this оказывается мона опустить :) я не подумал об этом


Часовой пояс GMT +3, время: 11:12.