2010-12-18 11 views
0

von der letzten Frage Anknüpfend beantwortet: onClick change list stylesonClick Änderungsliste Arten * aber

Anstatt alle Klassen zu verändern, alle Klassen ändern, aber „li“ mit einer bestimmten Klasse. Wenn also einer der li's den Klassennamen "dontChange" hat, wird der Klassenname nicht geändert, aber alle anderen.

Wenn Sie auf ein Element klicken, sollte es so geändert werden, dass alle anderen Elemente angeklickt werden, außer das Element mit "dontChange" auf "notClicked". Wenn Sie einen "angeklickt" oder "nicht geklickt" -Element doppelklicken, sollte es zu "dontChange" wechseln und alles andere sollte sich zu "notClicked" ändern.

Danke, Yan

Antwort

1

versuchen diese

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <title></title> 
<script language="JavaScript" type="text/javascript"> 
/*<![CDATA[*/ 
var Lst; 

function CngClass(obj){ 
if (Lst) Lst.className=''; 
if(obj.className=='dontChange') 
{ 
    obj.className='dontChange'; 
} 
else 
{ 
obj.className='Clicked'; 
Lst=obj; 
} 

} 

/*]]>*/ 
</script> 
<style> 
    .notClicked {color: black} 
    .Clicked {color: red} 
    .dontChange {color: blue} 

</style></head> 

<body> 

<ul> 
<li> 
<a onclick="CngClass(this);" href="#" class="notClicked">Test 1 
</a> 
</li> 
<li> 
<a onclick="CngClass(this);" href="#" class="notClicked">Test 2 
</a> 
</li> 
<li> 
<a onclick="CngClass(this);" href="#" class="dontChange">Test 3 
</a> 
</li> 
</ul> 

</body> 


</html> 
+0

Hat mit meiner Modifikation nicht funktioniert, bitte einen Blick auf nehmen (class = Playltem ist diejenige, die wir halten wollen): http://jsbin.com/abedi5/edit – Yan

+0

Ich denke, Problem ist, wenn Sie an Doppelklick arbeiten, es auch das Onclick-Ereignis aufrufen ... –

+0

kann alles getan werden? – Yan

0

Ich glaube, Sie jQuery sollten überprüfen. Sie könnten einen Selektor wie diesen schreiben, um eine Klasse zu allen li s hinzuzufügen, die nicht die Klasse dontChange haben.

$('li').not('.dontChange').addClass('changed'); 
0

den Code aus der vorherige Antwort verwenden Sie es wie folgt, dass dies einfach

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <title></title> 
<script language="JavaScript" type="text/javascript"> 
var Lst; 

function CngClass(obj){ 
if(obj.className=='notClicked') 
{ obj.className='Clicked'; 
    Lst=obj; 
} 
} 

</script> 
<style> 
    .notClicked .dontChange{color: black} 
    .Clicked {color: red} 
</style></head> 

<body> 

<ul> 
<li> 
<a onclick="CngClass(this);" href="#" class="dontChange">1 
</a> 
</li> 
<li> 
<a onclick="CngClass(this);" href="#" class="notClicked">2 
</a> 
</li> 
<li> 
<a onclick="CngClass(this);" href="#" class="notClicked">3 
</a> 
</li> 
</ul> 

</body> 


</html> 

wollen werden, sagt etwas zu ändern, wenn es eine bestimmte Klasse ist es dann ändern.

getestet in FF3.61

Verwandte Themen