Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem jquery po ajaxu funguje jen částečně

Ahoj, webovou stránku kde mám tabulku s filtrací a mám soubor status.js, kde mám toto:

var iResults = {};///pro jednoduchost zkráceno, pole je ale naplněné
$(function(){
...
...
...
$('tr').each(function() {
        if($(this).data('aktivni') == 'A') {
            if($(this).data('id') in iResults) setStatus($(this), iResults[$(this).data('id')]);  
        }         
});

...
...
...

function setStatus(obj, status)  {
       
        
        console.log('set_status - ' + status);
        if(iType[status][0]== undefined){
            console.log('undef');
            status = 'unknow_status';
        }       
        if(status === "not_found") {
            console.log('nastavuji i_clear - '+ obj.data('id'));
            $(obj).addClass('i_clear');
        }
        if(status !== "not_found" || status === ""){            
            console.log('nastavuji i_warning - '+ obj.data('id'));
            $(obj).addClass('i_warning');
        }
        
        //atd...
    }


}); 

a HTML tabulka:

...
<table>
...
<tr id="..." data-aktivni="..." data-id="..." data-typ="..."> ... </tr>
<tr id="..." data-aktivni="..." data-id="..." data-typ="..."> ... </tr>
<tr id="..." data-aktivni="..." data-id="..." data-typ="..."> ... </tr>
...
</table>

při normálním načtení stránky jquery projde řádky v tabulce a pokud má řádek nastaven data-aktivni="A", tak se volá funkce která na základě určitých dat nastaví class tomu konkrétnímu řádku. To funguje dobře, ale teď jsem přidal filtrování dat v tabulce přes ajax a když user provede filtraci a dojde k vykreslení vyfiltrované tabulky, tak sice jquery pracuje (console.log ve funkci setStatus vypisují do konzole info), ale třída se nenastaví. Řeším to už skoro dva dny a nemůžu přijít na to proč to tak je...

zkoušel jsem už i celej js kod smazat a udělat jen toto:

$(document).ready(function () {
    $('tr').addClass('test');
    alert("ok");
});

ale třída se nenastaví, alert se ale vypíše. Dokonce si můžu i nechat zobrazit správný počet řádků tabulky...

Když ale data vyfiltruji, a pak dám F5, tak se jquery provede v pořádku.

Nevíte co s tím? díky moc!

P.S.: používám nette, ale to je asi v tuto chvíli jedno...

Předmět Autor Datum
Máš to někde na netu, kde by se na to dalo podívat?
Wikan 29.03.2017 16:41
Wikan
nn, nemám/nemůžu, ale zkusím vymyslet public ukázku... zatím více info níže... poslední
n.u.r.v. 30.03.2017 00:01
n.u.r.v.
Mohu jenom hádat: nemáš tam duplikovaná id ? Není vidět, jak provádíš filtraci dat v tabulce. Nevytv…
hynajs 29.03.2017 23:53
hynajs
ahoj, nn duplikace není... používám nette a tabulku mám ve snippetu - vždy se překreslí jen celá tab…
n.u.r.v. 30.03.2017 00:00
n.u.r.v.

ahoj, nn duplikace není... používám nette a tabulku mám ve snippetu - vždy se překreslí jen celá tabulka...

Zatím jsem našel nepěkné ale funkční řešení:

window.setInterval(function(){
$('tr').each(function() {
        if($(this).data('aktivni') == 'A' && $(this).attr('class') == undefined) {
            if($(this).data('id') in iResults) setStatus($(this), iResults[$(this).data('id')]);  
        }         
});
}, 500); 

zítra budu pokračovat...

Zpět do poradny Odpovědět na původní otázku Nahoru