jquery - dynamically detect change to span element -
i have span elements dynamically generated ajax response. trying detect change span value using below code , seems work in jsfiddle fixed elements not in real scenario data dynamically generated. span values updated setinterval function number increment trying detect.
the steps taking - appreciate advice on why code not working?
- for elements id containing "minutes" <- these span elements
- get id's
- detect change in elements id's step 2
- when change detected, span element value
- check if span value greater 00 i.e. 01 (this minute value)
- if condition step 5 met apply css
- if condition step 5 not met remove css
$('[id*="minutes"]').each(function() { spanid = $(this).attr('id'); console.log(spanid); $("#"+spanid).on('change',function(){ spanval = $(this).text(); id = $(this).attr('id').charat(0); if(spanval > 00) { $('#results').text(span); $("#"+id+"-wt-html").css({"background":"#ffe95b", "color":"red"}); } else { $("#"+id+"-wt-html").removeattr("style") } }); });
sample html
<td id="9-wt-html"> <div id="9-wt-ajax"> <span id="9-hours">00</span>: <span id="9-minutes">15</span>: <span id="9-seconds">12</span> </div> </td>
the above span elements created before ajax call using fixed script below:
for (var key in skills_arr) { //console.log(skills_arr[key]+" - "+key); $('#table > tbody:last-child').append('<tr><td>'+skills_arr[key]+'</td><td id="'+key+'-cw-html"><div id="'+key+'-cw-ajax"></div></td><td id="'+key+'-aa-html"><div id="'+key+'-aa-ajax"></div></td><td id="'+key+'-wt-html"><div id="'+key+'-wt-ajax"><span id="'+key+'-hours">00</span>:<span id="'+key+'-minutes">00</span>:<span id="'+key+'-seconds">00</span></div></td><td id="'+key+'-op-html"><div id="'+key+'-op-ajax"></div></td></tr>'); }
okay, have created snippet
below based on understandings.
also, highlight below points.
for
span
element, can't listenchange
event. instead, code below listendomsubtreemodified
event.also, can directly listen event of element using
$('[id*="minutes"]').on('domsubtreemodified', function(){})
if element exists before line.otherwise, have listen same
parent
ordocument
given below.
$('#table').on('domsubtreemodified', '[id*="minutes"]', function() { var span = $(this); var spanvalue = parseint(span.text()); var id = span.attr('id').charat(0); if(spanvalue > 0) { //$('#results').text(span); // not sure this? $("#"+id+"-wt-html").css({"background":"#ffe95b", "color":"red"}); } else { $("#"+id+"-wt-html").removeattr("style") } }); var skills_arr = { '9': 'some value here' }; (var key in skills_arr) { $('#table > tbody:last-child').append('<tr><td>'+skills_arr[key]+'</td><td id="'+key+'-cw-html"><div id="'+key+'-cw-ajax"></div></td><td id="'+key+'-aa-html"><div id="'+key+'-aa-ajax"></div></td><td id="'+key+'-wt-html"><div id="'+key+'-wt-ajax"><span id="'+key+'-hours">00</span>:<span id="'+key+'-minutes">00</span>:<span id="'+key+'-seconds">00</span></div></td><td id="'+key+'-op-html"><div id="'+key+'-op-ajax"></div></td></tr>'); } settimeout(function(){ $('#9-minutes').text('15'); $('#9-seconds').text('12'); }, 3000); settimeout(function(){ $('#9-minutes').text('00'); $('#9-seconds').text('10'); }, 6000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table id="table"> <tbody> </tbody> </table> <p>results:</p> <div id="#results"> </div>
Comments
Post a Comment