po invalidovani selctboxu na ktorom je naviazany onChange js extenze prestane tato extenze fungovat

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
duskohu
Člen | 778
+
0
-

Caute neviete mi poradit? Mam selectBox, na ktorom mam naviazanu extenziu. Tento selectBox je v snippete, ked snippet invalidnem selectBox sa prekresli a extenze prestane reagovt. Neviete mi poradit ako to riesit?

extenze

$.nette.ext('data-dependent-select-box', {
    init: function () {
        $('select[data-dependent-select-box]').on("change", function(e){
            e.preventDefault();
            var data = $(this).data('dependentSelectBox');
            if(data.url !== 'undefined'){
                $.nette.ajax({
                    url: data.url,
                    data: data.param + $(this).val()
                });
            }
        });
    }
});

Mimochodom keby niekoho napadlo preco prekreslujem tento selectBox. Tak napr ked dam resetnut formular ajaxovo. Inak tento selectBox len vola handle ktory invaliduje dalsi selectBox

{snippet form}
    {input selectBox1}

    {snippet selectBox1}
        {input selectBox2}
    {/snippet}
{/snippet}
mkoubik
Člen | 728
+
0
-

Takhle se to naváže jen na selecty které existovaly při spištění $.nette.init(). Místo eventu init použij load, ten se volá po každém překreslení snippetů.

Editoval mkoubik (16. 1. 2013 17:36)

Lopata
Člen | 139
+
0
-

Děje se to nejspíš z důvodu, který popsal mkoubik.
Můžeš to také vyřešit změnou způsobu navěšování event handleru. Dřív se na tohle používala jQuery metoda .live()

<script>
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
</script>

Pro Tvůj případ by tedy mohlo fungovat

<script>
$('body').on('change', 'select[data-dependent-select-box]', function(e) {
	...
});
</script>
duskohu
Člen | 778
+
0
-

Dakujem velmi pekne za odpovede, to load pomohlo.