Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JS - eristetty funktio

juhauta [17.02.2014 20:09:53]

#

Tämä liittyy js + jqueryyn, en tiedä termiä mutta jos teen yleisen funktion:

$('.form-info').on("change", function() {

niin miten saan tuon siten että jokainen input jossa kyseinen luokka on käynnistää kyseisen funktion täysin omassa scopessaan ?

Eli jos tuota jatkaa niin että tulisi timeout, eli funktio odottaa hetken ennen jatkamista ja jos se käynnistyy _samasta_ elementistä uudestaan niin timeout resetoidaan. Mutta jokaiselle elementille täytyisi olla oma timeout-muuttujansa !

Tälle joku viisaampi varmasti osaisi kertoa jonkin terminkin...

tämä ei siis toiminut...

$('.form-info').on("change", function() {
        clearTimeout(MainInputSaveTimeOut);
        var fieldTmpTmp=$(this);
        MainInputSaveTimeOut = setTimeout(function() {
            formInfoSave(fieldTmpTmp);
....

jlaire [17.02.2014 20:41:11]

#

Tässä yksi tapa.

$(".form-info").each(function () {
    var timeout = null;
    $(this).on("change", function () {
        clearTimeout(timeout);
        timeout = setTimeout(function () {
            // ...
        }, 1337);
    });
});

Metabolix [17.02.2014 20:46:04]

#

Jos omalle scopelle ei ole muuta tarvetta kuin timeoutin id:n säilytys erikseen joka elementille, voit käyttää samaa funktiota ja käyttää data-funktiota.

$(".form-info").on("change", function() {
	clearTimeout($(this).data("timeout"));
	$(this).data("timeout", setTimeout(foo));
});

juhauta [18.02.2014 20:28:09]

#

jlaire: eikö tuo var timeout = null jo resetoi tuon timeoutin ?

Kiitos joka tapauksessa vastauksista, molemmat vaikuttaa hyviltä

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta