Скрипт, меняющий атрибут title у элемента
На сайте есть оценка материалов, вот html код:
<ul id="uStarRating480" class="u-star-rating" title="Рейтинг: 0.0/0">
<li class="u-current-rating" id="uCurStarRating480" style="width:0%;"></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',1);return false;" class="u-one-star">1</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',2);return false;" class="u-two-stars">2</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',3);return false;" class="u-three-stars">3</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',4);return false;" class="u-four-stars">4</a></li>
<li class="u-star-li-480"><a href="#" onclick="ustarrating('480',5);return false;" class="u-five-stars">5</a></li></ul>
Нужно, чтобы в зависимости от звездочки, на которую навели курсор, появлялся текст "плохо", "хорошо"... Подкиньте пожалуйста идею как это реализовать |
удалено.
|
Gozar, спс.
Получилось:
$(function(){
$(".u-star-li-480 a.u-one-star").mouseover(function(){document.getElementById("uStarRating480").title="Ужасно";});
$(".u-star-li-480 a.u-two-stars").mouseover(function(){document.getElementById("uStarRating480").title="Плохо";});
$(".u-star-li-480 a.u-three-stars").mouseover(function(){document.getElementById("uStarRating480").title="Средне";});
$(".u-star-li-480 a.u-four-stars").mouseover(function(){document.getElementById("uStarRating480").title="Хорошо";});
$(".u-star-li-480 a.u-five-stars").mouseover(function(){document.getElementById("uStarRating480").title="Шедевр";});
});
а через $ до title добраться не получилось( |
>$(".u-star-li-480 a.u-one-star").mouseover(function(){document.getElementByI d("uStarRating480").title="Ужасно";});
>Ужасно |
Если делать без говнокода, то можно попробовать вот так:
jQuery(function ($) {
$(".u-star-li-480").mouseover(function (event) {
var c = event.target.className.match(/-(\w+)-/)[1];
if (c)
$("#uStarRating480").attr("title", {
one: "Ужасно",
two: "Плохо",
three: "Средне",
four: "Хорошо",
five: "Шедевр"
}[c]);
});
});
|
удалено.
|
Код ТС был написан путём нажатий Ctrl-C Ctrl-V, что есть главный признак говнокода.
|
exec,
спасибо, постараюсь разобраться |
удалено.
|
Gozar,
он в два раза короче; интересно узнать какой работает быстрее |
Gozar, всего один обработчик на один элемент (вместо пяти, как в варианте ТС-а) + мой код глаза не режет.
|
удалено.
|
Я бы так не сказал, наверное пожалуй не мение важный фактор жаваскрипта после его работоспособности это объем кода, так как скорость зависит от браузера и компа. К тому же его изменять проще, не нужно в каждой строчке изменять что то, а все один раз. И загружаться такая страничка будет быстрее.
|
удалено.
|
В данном случае никаких, но если писать большой проект с таким подходом то будет ощутимо. Хотя ИМХО использование JQuery для реализации только этого куска кода уже не совсем целесообразно.
Да и встречный вопрос, зачем писать лишний код если можно написать гораздо компактнее? Ведь по сути обычному пользователю фиолетово ему главное лишь бы работало стабильно. |
удалено.
|
Цитата:
Цитата:
|
удалено.
|
Цитата:
|
удалено.
|
Вот ради прицнипа скопировал оба варианта реализации в блокнот:
С копипастом весит: 605 байт Оптимизированый: 281 байт Разница есть и ощутима, 50% экономии. |
удалено.
|
удалено.
|
Цитата:
|
Цитата:
|
удалено.
|
удалено.
|
Да в любом коде приходится разбираться, в конце концов я же не заставляю Вас писать так а не иначе, как хотите так и пишите я выразил свою точку зрения и для меня важна компактность...
|
удалено.
|
объясните пожалуйста, что значит
var c = event.target.className.match(/-(\w+)-/)[1]; ? |
удалено.
|
"регулярное выражение", спс
|
Читабельность, конечно же, важна, но она не должна быть в ущерб производительности. Тем более, если речь идет о крупных проектах.
Для плохочитабельных (и не только) участков кода давным-давно придуманы комментарии. И не зря же в вакансиях пишут: "Умение читать чужой код". На объем кода можно забить, если юзать компрессоры. |
удалено.
|
удалено.
|
удалено.
|
удалено.
|
Gozar,
проблема в том, что html код генерируется автоматически, так что title прописать я не могу |
А какие проблемы с getElementById?
|
удалено.
|
| Часовой пояс GMT +3, время: 06:39. |