webForumDet fria alternativet

Hitta text och länk i en tabell

JavaScript

4 svar · 791 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej alla glada!

Försöker mha JQuery do some magic ;-)

har en tabell som ser ut som följer:

<table class="weeks">
<tr>
<td class="center"><a class="dialogForm tooltip" href="sida.aspx?50">50</a></td>
<td class="center"><a class="dialogForm tooltip" href="sida.aspx?51">51</a></td>			
<td class="center"><a class="dialogForm tooltip" href="sida.aspx?52">52</a></td>			
</tr>
<tr>
<td class="theme"><span>femti</span></td>			
<td class="theme"><span>femtiett</span></td>			
<td class="theme"><span>femtitvå</span></td>			
</tr>
</table>

Jag vill nu modifiera texten i klasserna "theme" genom att lägga på länken från klasserna "center"

resultat ex.

 
<table class="weeks">
<tr>
<td class="center"><a class="dialogForm tooltip" href="sida.aspx?50">50</a></td>			
<td class="center"><a class="dialogForm tooltip" href="sida.aspx?51">51</a></td>			
<td class="center"><a class="dialogForm tooltip" href="sida.aspx?52">52</a></td>			
</tr>
<tr>
<td class="theme"><span><a href="sida.aspx?50">femti</a></span></td>			
<td class="theme"><span><a href="sida.aspx?51">femtiett</a></span></td>			
<td class="theme"><span><a href="sida.aspx?52">femtitvå</a></span></td>			
</tr>
</table>

Funkar att hämta ut länken med:

        $('.weeks tr td').each(function () {
            var lnk = $(this).find('.dialogForm').attr('href');
            if (lnk.length > 0) {
              alert(lnk);
	}

...men hur ska jag hämta ut texten samt modifiera texten i den efterföljande mängden td?

Detta skriver ut alla val på samma gång:

	var txt = $(trSel).closest("tr").next().find("td:has(span)").text();
	//Texten i span ska bli en länk baserad på "lnk".
	//ex. var newlnk = '<a href="'+lnk+'">'+txt+'</a>';
	//$(trSel).closest("tr").next().find("td:has(span)").html(newlnk);

Hur göra...?

Medlem sedan juni 20019 519 inlägg
#2

och du kan inte modifiera html koden alls? td.center känns som det borde vara en th ifrån början ;)

annars få du hämta ut kollektionen med $("td.center a")

och en kollektion med $("td.theme span") och loopar ut span och hämta dess index mot det index som du har i td.center a kollektionen.

man kan göra så:

var links = $("td.center a"),
    theme = $("td.theme span").each(function(index) {
      var span = $(this),
          val = $(this).text(),
          el = links.eq(index).clone().text(val).wrap("<span>");

      span.replaceWith(el);
      
    });

demo: http://jsbin.com/ogivan/edit#javascript,html,live

eller om a-elementet kan wrappar span:

var links = $("td.center a"),
    theme = $("td.theme span").each(function(index) {
      var span = $(this),
          val = $(this).text(),
          el = links.eq(index).clone().text(val);
      span.text("").wrap(el);

      
    });

eller:

var links = $("td.center a"),
    theme = $("td.theme span").each(function(index) {
      var span = $(this),
          el = links.eq(index).clone().text("");
      span.contents().filter(function(){return this.nodeType === 3}).wrap(el);
    });

;)

Medlem sedan mars 20011 346 inlägg
#3

Hej!

Alla exempel fungerade mycket bra. Tack så mycket.

Jag märkte dock att det smugit sig in en länk som jag vill hoppa över.
Första länken i raden innehåller:

<div id="PrevWeek" style="position:static;float:left">
  <a id="hypPrev" href="page.aspx"><img alt="Previous" border="0" src="images/left-scroll.gif" /></a>
</div>

Går det att på något bra sätt hoppa över den första länken som uppenbarar sig?

Medlem sedan juni 20019 519 inlägg
#4

ta och ändra kollektionen att inte ta den första td på båda kollektionerna

:not(:first)

Medlem sedan mars 20011 346 inlägg
#5

Försökte med detta, men utan gott resultat...

var links = $("td.center a:not(:first)"),

Det funkade nästan...sista länken kommer inte med..?!

Edit:

Sorry! Var jag som inte hade ett span-element runt sista länken.

Tusen tack för bra svar!!!

255 ms totalt · 4 externa anrop · v20260731065814-full.20824b9f
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)