# Element per CSS ansprechen



## Teilzeitphilosoph (27. Juli 2010)

Moinz. 
Ich hab hier diesen durchaus hässlichen HTML-Code und möchte das *width:250px* per CSS ansprechen. Kann mir bitte jemand sagen, wie man so was abarbeitet? 


```
<div id="content">
  <div class="csc-default" id="c22">
    <div class="csc-textpic csc-textpic-intext-right-nowrap csc-textpic-caption-l">
      <div class="csc-textpic-imagewrap">
        <dl style="width: 250px;" class="csc-textpic-image csc-textpic-firstcol csc-textpic-lastcol">
```

-bedank---


----------



## Sven Mintel (27. Juli 2010)

Moin,

Möglichkeiten gäbe es da viele, die kürzeste:

```
#c22 div div dl
```

...ob damit aber wirklich nur dies eine Element erfasst wird, kann man nur sagen, wenn man die gesamte Struktur dieses Knotens(#c22) kennt


----------



## hela (27. Juli 2010)

... kommt auch darauf an, was du mit diesem Teil zu bereden hast.
Falls du die Breite per CSS ändern möchtest, dann hast du wegen der hohen Spezifität der Inline-Styles schlechte Karten.


----------



## Teilzeitphilosoph (27. Juli 2010)

Ach so, das hätte ich noch sagen sollen. Das #c22 ist zufallsbedingt...ne Typo3-Geschichte, für die ich nix kann. ^^
Aber an deiner Antwort abgeleitet hätte ich jetzt auf

#content div div div dl { ... }

gewettet, was aber nicht geklappt hat.

Und "ja", es geht um die Breite. Über den Firebug lässt sich das problemlos einstellen, aber leider nich speichern.


----------



## Sven Mintel (27. Juli 2010)

deklariere mal deine Formate als wichtig, das sollte die Gewichtung ändern:
	
	
	



```
#content div div div dl {width:350px !important;}
```


----------



## Teilzeitphilosoph (27. Juli 2010)

Yoga-Flame, das war´s. Wieder was gelernt...man kann also so was ganz einfach der Reihe nach abklappern und !important ist wichtig. Meinen Dank!


----------



## Teilzeitphilosoph (27. Juli 2010)

Ich hätte da noch mal ne Folgefrage, die teilweise hier ganz gut passt. Innerhalb des dt befindet sich ein img mit dem Titel "MeinBild" zu Testzwecken. 
Weiß zufällig jemand, wie man dies per JQuery anspricht? 
Momentan fummel ich gerade mit


```
if( $("#content div div div dl dt img:contains('MeinBild')") ){
  alert("hi");
}
```

rum aber er alert(ed) auf jeder Seite. Ja, ich gestehe...das ist zum großen Teil noch Trial-n-Error, weil mich diese ewigen Verzweigungen kirre machen. :-(
Wobei ich beim zweiten Gedanken eh etwas zweifle...wie soll denn contains den Titel rausknobeln? Da muss ich noch mal in die API gucken.


----------



## Sven Mintel (27. Juli 2010)

Es gibt in jQuery auch einen Attribut-Selektor 

```
img[title='MeinBild']
```


----------



## Teilzeitphilosoph (28. Juli 2010)

Ah, cool. Ich dank dir. Aber 100% vor Fehlern schützt es mich dennoch nicht. 
Oder warum springt das hier auf jeder Seite an, wenn das Bild nur auf einer bestimmten HTML ist?


```
if( $("#content > img[title='MeinBild']") ){
	alert("hi");
}
```


----------



## Sven Mintel (28. Juli 2010)

Weil das Selektieren in jedem Fall etwas liefert, und wenn nichts gefunden wurde, ist dies ein leerer Array.
Ein leerer Array entspricht wiederum einem booleschen true...dein Vergleich schlägt fehl.

Probiers so: 

```
if( $("#content > img[title='MeinBild']").length ){
	alert("hi");
}
```


----------



## Teilzeitphilosoph (29. Juli 2010)

Ach so, dann hab ich das falsch verstanden. Ich dachte, es reicht eine Übereinstimmung im Title. Aber mit length klappt es 1a. Ferner kann ich auch verschachtelte Divs mit div > div > div ansprechen, ebenfalls top! Sieht zwar komisch aus aber immerhin läuft es. 
Ich danke!


----------

