2010-11-23 6 views
0

Ich bin mir nicht sicher, ob dies überhaupt möglich ist, mit dem gesagt ... unten ist ein Beispiel von HTML, mit dem ich arbeite. Ich möchte, mit jQuery, den Produktnamen und fügen Sie es als eine ID auf dem Paired Span-Tag mit der Klasse "Unterstützung", Leerzeichen durch Unterstriche ersetzen.Verwenden Sie jquery, um eine ID basierend auf Text in einem span-Tag zu schreiben

<div><span class="title">Product1 Name</span> <span class="support"></span></div> 
<div><span class="title">Product1 Name</span> <span class="support"></span></div> 
<div><span class="title">Product1 Name</span> <span class="support"></span></div> 
<div><span class="title">Product1 Name</span> <span class="support"></span></div> 

Unten wäre die gewünschte HTML, die jQuery ändern würde. Ist das möglich?

<div><span class="title">Product1 Name</span> <span class="support" id="product1_name"></span> </div> 
<div><span class="title">Product2 Name</span> <span class="support" id="product2_name"></span> </div> 
<div><span class="title">Product3 Name</span> <span class="support" id="product3_name"></span> </div> 
<div><span class="title">Product4 Name</span> <span class="support" id="product4_name"></span></div> 
+0

Haben Sie für Ihren „Input“ bedeutet Spannweiten bis haben unterschiedliche Produktnamen? Sie haben alle 'Produkt1 Name'. –

Antwort

4

Yup.

$('span.title').each(function() 
{ 
    var $this = $(this), 
     id = $this.text().toLowerCase().replace(/ /g, '_'); 
    $this.next().attr('id', id); 
}); 

Demo!

sehr gut Dies könnte Elemente mit doppelten IDs erstellen, jedoch. Nicht gut.

+0

Aww, du schlägst mich dazu ... – Blender

+0

Wie kann dies geändert werden, um die Spannweite mit einer Klasse von "Unterstützung" in der gleichen div-Tag? Ich habe nicht erwähnt, dass es noch andere Span-Tags in der Mischung geben wird. –

+0

@Robert: Ändern Sie '$ this.next()' in '$ this.siblings ('span.support')'. http://api.jquery.com/siblings –

0

so etwas wie:

(".title").each(function() {$(this).next(".support").attr("id",$(this).html().replace(" ","_"));}); 

hat überprüfen Sie es nicht, aber es sollte funktionieren, ich hoffe, die Klammer rechts am Ende zählen bekam ...

Verwandte Themen