2014-11-26 3 views
0

У меня есть быстрый вопрос, который должен быть таким простым. У меня есть таблица, которая имеет 4 столбца, и в каждом из них у меня есть тег, который, в свою очередь, содержит <img>. Я ищу способ в css или javascript, что я могу изменить src img при наведении курсора мыши.Изменение изображения src on hover

Так, например, только одна из строк будет выглядеть так:

<td><a href="http://link1/"><img alt="Link1" src="http://images/Link1.png/" /></a></td> 

и CSS, что у меня есть на данный момент является:

img[alt="Link1"]:hover { 
    content:url("http://Link1Pressed.png"); 
} 

Теперь это прекрасно работает, как это следует делать в chrome, но в Firefox и IE он просто ничего не делает для мыши, что я могу сделать, чтобы исправить это? Есть ли лучший способ сделать это для 40 кнопок, которые у меня есть особенно, поскольку имена являются обычными. IE, ссылка представляет собой строчную версию alt, которая совпадает с бит pre.png изображения src, который, в свою очередь, такой же, как наведение на img src, но для того, что наведение на img src также нажато ,

Ваша помощь была бы очень оценена. Thanks

+0

вас не могут применять директивы 'content' в': hover'. Вы уверены, что это работает в Chrome? – haim770

+2

Возможно, вы можете установить тег 'a' с правильной шириной и высотой, а затем установить изображение как фон CSS вместо неявного тега' img'? Таким образом, вы можете просто установить состояние CSS ': hover' для другого изображения. – Wil

+0

Спасибо, Вил, я думаю, что это общий консенсус. haim770 - он уверен, что работает на Chrome (и, очевидно, Safari тоже). Я смущен, когда вы будете использовать контент, если не на ходу, но я могу быть просто толстым. –

ответ

1

Это решение изложено в вашем вопросе работает только тогда, когда это псевдо-элемент. Вам нужно либо сделать его фоновое изображение на a или td и изменить его таким образом, или использовать функцию JQuery, как это:

$('a').on('mouseover', function() { 
    $(this).find('img').attr('src', 'path/to/my/image.png'); 
}); 

или родной JavaScript

document.querySelectorAll('a img[alt=Link1]').addEventListener('mouseover', function() { 
    this.src = 'path/to/my/image.png'; 
}); 
+0

Действительно. Но вы, вероятно, подразумевали 'a img [alt =" Link1 "]' как селектор. – haim770

+0

@ haim770 - Если мы собираемся выбрать что-то столь же произвольное, как тег 'alt', почему бы не использовать' src' вместо этого? Это всего лишь пример, селектор должен использоваться с соответствующей спецификой для выбора только желаемых элементов. Надеюсь, это дано. Если вы считаете, что это необходимо, я обновлю ответ, обратив внимание на этот факт. –

+0

Согласен. Но это оригинальный CSS-селектор, используемый OP. – haim770

1

Свойство content может применяться только к псевдо элементам. Вместо этого, используйте background-image на div:

div[alt="Link1"]{ 
    background-image: url("http://images/Link1.png"); 
} 
div[alt="Link1"]:hover { 
    background-image: url("http://Link1Pressed.png"); 
} 
+1

Использование 'background-image' в теге' img' является семантически yucky, и ему нужно будет удалить тег 'src', чтобы это работало. Я бы предпочел увидеть это на элементе 'block' или' inline-block'. –

+0

Вопрос только в том, чтобы не просто сделать это с помощью элеммента, а не добавлять div? Я ленивый! –

+0

@ DanielCasserly Да, если вы примените 'alt' или имеете другой рабочий селектор. – Mooseman