Ik wil dat als je met de muis over een tabelcel gaat de achtergrondkleur veranderd, ik heb dat als volgt mijn css-file gezet:

td.menu:hover{
	background-color: #444444;
}

In FF werkt dit gewoon goed, maar in IE niet, heeft iemand een oplossing?
Je moet het inderdaad met Javascript doen, omdat IE het alleen ondersteund bij de <a>-tag.

Je kan alle tekst die normaal tussen <td>-tags (of <th>-tags voor kopjes) staat nu tussen <td>-tags en <a>-tags zetten, maar dan gebruik je de HTML niet semantisch. En dat is niet goed :c)

De enige oplossing die nog een beetje crossbrowser is, is Javascript, maar die doet weer niets als Javascript staat uitgeschakeld of Javascript helemaal niet aanwezig is.
Er is nog een andere oplossing; IE behaviours. Sla onderstaande code op als csshover.htc


<attach event="ondocumentready" handler="parseStylesheets" />
<script>
/**
 *	Whatever:hover - V1.42.060206 - hover & active
 *	------------------------------------------------------------
 *	(c) 2005 - Peter Nederlof
 *	Peterned - http://www.xs4all.nl/~peterned/
 *	License  - http://creativecommons.org/licenses/LGPL/2.1/
 *
 *	Whatever:hover is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU Lesser General Public
 *	License as published by the Free Software Foundation; either
 *	version 2.1 of the License, or (at your option) any later version.
 *
 *	Whatever:hover is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *	Lesser General Public License for more details.
 *
 *	Credits and thanks to:
 *	Arnoud Berendsen, Martin Reurings, Robert Hanson
 *
 *	howto: body { behavior:url("csshover.htc"); }
 *	------------------------------------------------------------
 */

var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
currentSheet, doc = window.document, hoverEvents = [], activators = {
	onhover:{on:'onmouseover', off:'onmouseout'},
	onactive:{on:'onmousedown', off:'onmouseup'}
}

function parseStylesheets() {
	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
	window.attachEvent('onunload', unhookHoverEvents);
	var sheets = doc.styleSheets, l = sheets.length;
	for(var i=0; i<l; i++) 
		parseStylesheet(sheets[i]);
}
	function parseStylesheet(sheet) {
		if(sheet.imports) {
			try {
				var imports = sheet.imports, l = imports.length;
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
			} catch(securityException){}
		}

		try {
			var rules = (currentSheet = sheet).rules, l = rules.length;
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
		} catch(securityException){}
	}

	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!csshoverReg.test(select) || !style) return;

		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
		var affected = select.replace(/:(hover|active).*$/, '');
		var elements = getElementsBySelect(affected);
		if(elements.length == 0) return;

		currentSheet.addRule(newSelect, style);
		for(var i=0; i<elements.length; i++)
			new HoverElement(elements[i], className, activators[pseudo]);
	}

function HoverElement(node, className, events) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}
	function hookHoverEvent(node, type, handler) {
		node.attachEvent(type, handler);
		hoverEvents[hoverEvents.length] = { 
			node:node, type:type, handler:handler 
		};
	}

	function unhookHoverEvents() {
		for(var e,i=0; i<hoverEvents.length; i++) {
			e = hoverEvents[i]; 
			e.node.detachEvent(e.type, e.handler);
		}
	}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}
	function getSelectedNodes(select, elements) {
		var result, node, nodes = [];
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
		if(identify) {
			var element = doc.getElementById(identify[1]);
			return element? [element]:nodes;
		}
		
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
		for(var i=0; i<elements.length; i++) {
			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
			for(var j=0; j<result.length; j++) {
				node = result[j];
				if(classReg && !classReg.test(node.className)) continue;
				nodes[nodes.length] = node;
			}
		}	
		
		return nodes;
	}
</script>


In de <head> sectie van de pagina waar je het nodig hebt, doe je dit:

<!--[if IE]>
	<style type="text/css" media="screen">
	body {
		behavior: url(csshover.htc);
	} 
	</style>
<![endif]-->

Nu heb je ook td:hover in IE
OK, het ziet er niet uit ;-) maar ja, je moet toch wat, heb het geprobeerd en het werkt gedeeltelijk, alleen bij de eerste cel doet hij het, bij de anderen niet ( http://siro.saimen.nl ) ik snap niet hoe het kan! Iemand die het wel snapt?
[edit]
Mn host is raar aan het doen, site is momenteel niet te bereiken, heb em nu ff lokaal staan op: http://83.247.96.196/siro/
[/edit]
je hebt id="menu" maar moet het niet class="menu" zijn ?
@ruud

dat maakt niet uit zolang de class ook maar menu is. tenzij ie met divs werkt, dan is het weer een ander verhaal, maar dan moet de id wel binnen de div tag staan.

:)
nee, heb het in mn css ook gewoon staan als een id, maar het vreemde is dat hij het bij de eerste gewoon wel doet.
kan je die csshover behavior niet als body property in je css zetten?
Ik heb nu een tweede id in mn css staan precies hetzelfde als 'menu' alleen heb ik hem nu menu2 genoemd, nu doen dus de eerste 2 het. Dus hij kan het script op een een of andere manier maar 1 keer gebruiken?
blijkbaar, nou nog een menu3 en dan ben je klaar ;)

Reageren