webForumDet fria alternativet

jQuery each() funkar bara en gång? Dom-strul...

10 svar · 2 044 visningar · startad av bassebhu

bassebhuMedlem sedan nov. 20016 480 inlägg
#1

Jag har byggt följande funktion och det funkar som jag vill, men bara en gång, sen upphör det att fungera. Jag gissar att den fyller nåt i domen som sedan används nästa gång i stället för att börja från scratch med rows då .data('frames') har fått nya värden.

Idér hur jag kan nollställa allt efter att #total-duration har uppdaterats? Tack!

	/* Update total time */
	$.fn.updateTotalTime = function() {
		var total_frames = 0;
		var rows = $('#container .list-item'); // <tr> i en tabell
		rows.each(function() {
			var add_frames = $(this).data('frames');
			total_frames = total_frames+add_frames;
		});
		var timecode = frames_to_timecode(total_frames, $('body').data('p_tc_rate'), true, false);
		$('#total-duration').html(timecode);
    };
voigtann1Medlem sedan juni 20019 519 inlägg
#2

har du ett HTML exempel?

vad gör frames_to_timecode?

bassebhuMedlem sedan nov. 20016 480 inlägg
#3

frames_to_timecode() lägger bara till lite kolon och grejer, inget som hindrar timecode från att få ett nytt värde.

Detta kör jag när jag uppdaterar data("frames"):

$('#id-<?php echo $row['id']; ?>').attr('data-frames', result[0].frames); // en <tr> i tabellen
$(document).updateTotalTime();

Är det så att jag uppdaterar data-frames, men den inte känner av de nya värdena? Fast den gör ju det första gången, så det känns mer som att det som körs i each lagras nånstans och körs igen nästa gång updateTotalTime körs.

Jag är förvirrad :)

bassebhuMedlem sedan nov. 20016 480 inlägg
#4

Jag kom på det!

add_frames = parseInt($(this).attr('data-frames'));

var nyckeln!

Den lade ihop båda värdena till en sträng utan parseInt, men varför inte .data('frames') funkade skulle jag gärna vilja veta?

voigtann1Medlem sedan juni 20019 519 inlägg
#5

jag hade försökt köra .data() istället... och pars:a int med radix 10:

add_frames = parseInt($(this).data('frames'), 10);
bassebhuMedlem sedan nov. 20016 480 inlägg
#6

Det är det som är det skumma. Det funkar inte med .data(). Jag får inte fram något värde då. Jag kan inte heller uppdatera med .data('frames', value)

voigtann1Medlem sedan juni 20019 519 inlägg
#7

vilken version få du ut av jquery?

$.fn.jquery
bassebhuMedlem sedan nov. 20016 480 inlägg
#8

1.10.2

bassebhuMedlem sedan nov. 20016 480 inlägg
#9

hehe, jag har kört två versioner av jquery hela tiden. 2.1.1 laddades först och överskrevs av 1.10.2. Ska plocka bort den gamla och se vad som slutar att funka. Tror den är där av en orsak. Kör även migrate-1.2.1.min ser jag av nån anledning. Haha bra koll! Återkommer. Tack.

bassebhuMedlem sedan nov. 20016 480 inlägg
#10

Har fått bort både den äldre jQueryn och migrate, men fortfarande så funkar bara .attr, inte .data. Skumt. Jag använder .data på andra ställen och där fungerar det. Kan inte se att jag har gjort något fel. Det funkar ju, men bara lite OCD som vill att det ska stå .data i stället.

bassebhuMedlem sedan nov. 20016 480 inlägg
126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)