2009-07-18 20 views
0

ich Code wie diesen auf meiner Seite haben:Last Seite nach Klassennamen

<div class="item item_wall id1"></div> 
<div class="item item_wall id2"></div> 
<div class="item item_wall id3"></div> 
<div class="item item_wall id4"></div> 
<div class="item item_wall id5"></div> 

ich etwas in jquery wollen, so dass, wenn ein div mit der Klasse der „Punkt“ angeklickt wird, wird es laden Bei einem anderen div von einer Seite hängt der Dateiname von der Seite ab, auf die geklickt wurde. Vorzugsweise würde ich es Last gefallen:

something.php type = item_wall & id = id1

Für die Zukunft ist das, was ich am Ende mit:

<div id="itemstable" class="item_love"> 
    <div class="id1"></div> 
    <div class="id2"></div> 
    <div class="id3"></div> 
    <div class="id4"></div> 
    <div class="id5"></div> 
    <div class="id6"></div> 
</div> 

jQuery :

<script> 
$("#itemstable div").click(function(){ 
    var url = "something.php?type=" + $(this).parent().attr("class") + "id=" + $(this).attr("class"); 
    alert(url); 
}); 
</script> 
+0

Es ist irgendwie dumm, das Klassenattribut auf diese Weise zu verwenden. Warum verwenden Sie kein anderes Attribut, um den Wert zu speichern? Sogar ein benutzerdefiniertes Attribut. –

+0

Ich habe das Klassenattribut verwendet, weil für jede dieser Klassen etwas css angewendet wird. "item" legt die Breite/Höhe fest, "item_wall" setzt das Hintergrundbild, "id *" setzt die Hintergrundposition. – Hintswen

+0

keine Antwort ist technisch die akzeptierte Antwort, also akzeptiere ich sie nicht, aber beide haben mir geholfen. Danke Adrian Godong – Hintswen

Antwort

1

Echo Spencer Ruports Antwort, können Sie Machen Sie dies einfacher, wenn Sie jQuery verwenden, um andere benutzerdefinierte Attribute als die Klasse zu verwenden.

Zum Beispiel Ihre DIV kann wie folgt aussehen:

<div class="item" type="item_wall" id="1"></div> 

Sie können ganz einfach jQuery-Selektor und Ereignis wie die folgende erstellen:

$(".item").click(function() { 
    var url = "something.php?type=" + $(this).attr("type"); 
    windows.location = url; 
}); 

Natürlich nicht vergessen zu überprüfen Gültigkeit, vertraue niemals Benutzereingaben (dein HTML kann von einem böswilligen Benutzer neu geschrieben werden).

+0

Wenn ich benutzerdefinierte Attribute hinzufüge, würde das meinen Code nicht validieren? Sie können auch nicht css auf sie anwenden, also würde ich Typ und ID wiederholen müssen, alle 3 Klassen bekommen etwas css auf sie angewendet. item = width und height, type = welche Datei als Hintergrund verwenden, id = die Hintergrundposition, so dass das richtige Bild verwendet wird. – Hintswen

+0

Wenn Sie auf ein gültiges XHTML-Dokument bestehen, können Sie bei Ihrer Klassendeklaration bleiben und eine String-Manipulation verwenden, um Ihre "Variablen" auszuwerten. Oder Sie können mehrere untergeordnete DIV/SPAN mit Anzeige erstellen: keine, aber enthält den Wert (ala XML). So oder so, es ist nur mehr Arbeit zu erledigen. –

+0

aah richtig, nun, ich denke, ich brauche meinen Code nicht zu validieren, dachte nur, es wäre nett ... Was ist mit dem CSS-Problem? Irgendwie könnte ich es tun, ohne den Typ und die ID zu wiederholen? – Hintswen

2

Für XHTML-gültige Dokumente ist es am einfachsten, unsichtbare Kind DIV unter Ihrem Haupt DIV hinzuzufügen. Zum Beispiel:

<div class="item"> 
    <div class="variable type">item_wall</div> 
    <div class="variable id">1</div> 
</div> 

Sie können das "benutzerdefinierte Attribut" mit .find() finden. Z.B .:

$(".item").click(function() { 
    var type = $(this).find(".type").val(); 
    var url = "something.php?type=" + type; 
    windows.location = url; 
}); 

Ein bisschen Meinung: Daten mit UI Mischen sollte vermieden werden.

+0

Danke für all die Hilfe/Code Ich denke, ich werde mit Ihrer anderen Lösung gehen und nur den Typ und die ID zweimal (einmal in der Klasse, andere Zeit als benutzerdefinierte Attribute).Ich versuche, meinen Code so klein wie möglich zu halten, deshalb gehe ich nicht auf diese Option. Ich dachte eigentlich nur daran, die "item" - und "item_wall" -Klassen auf das Eltern-Div anzuwenden, was mir viel Platz in meinem Code einspart, und dann benutze ich css, um die Breite der Child-Divs festzulegen. Habe das noch nie probiert, aber ich gehe davon aus, dass es funktionieren wird ... – Hintswen

Verwandte Themen