Diskuze: jQuery volání funkce v proměnné ve funkci
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Pokud chceš vyvolat událost jiného elementu (tedy třeba click, mouseover apod.), lze použít funkci $('#container').trigger("click"); Jestli ale máš funkci uloženou v proměnné, můžeš ji zavolat buďto přímo nazevFunkce(argumenty); nebo (nazevFunkce)(argumenty) a nebo přes apply nazevFunkce.apply(kontext, [argument]); Kontext funkce je to this uvnitř funkce.
pokud ale napíšu:
$("#container").click(toLeft);
Tak to funguje.... jenomze po kliknuti na element kterej chci odscrollovat...
Ja bych potreboval aby kdyz kliknu na odkaz s id="zacatek" tak aby se na divu s
id="containter" provedla fce left() (definice výše)
Nevím kde dělám chybu....
Jednak - funkce musíš definovat buďto:
function toLeft() {
// Tělo funkce
}
A nebo použít proměnnou:
var toLeft = function() {
// Tělo funkce
}
Obojí ale míchat nelze. Dál jsem viděl definici proměnné rychlost =
1000. Tím z ní uděláš globální proměnnou a bude dostupná všude ve
skriptu (implicitně se uloží do objektu window). Použij před ní klíčové
slovo var. Tedy var rychlost = 1000; a nebo ji nemusíš používat vůbec a
rovnou tam napsat tu rychlost, je to jedno.
Teď k tomu tvému problému. První řešení je předat kontext funkce přes
apply. Asi takhle:
$('#zacatek').click(function() {
toLeft.apply($('#container'));
});
Nebo místo klíčového slova this ve funkci toLeft použít rovnou
'#container' a funkce bude vždy scrollovat jen prvky (resp. prvek) s
id="container".
Další možnost je nadefinovat jQuery vlastní událost a pak ji spustit.
// toLeft je ta naše funkce
$('#containter').bind('toLeft', toLeft);
$('#zacatek').click(function() {
$('#container').trigger('toLeft');
});
A nebo funkci uložit jako jQuery plugin:
// Nadefinujeme funkci jako jQuery plug-in
$.fn.toLeft = function() {
var rychlost = 1000;
$(this).stop().animate({ scrollLeft: 0 }, rychlost);
}
$('#zacatek').click(function() {
// Zavoláme jQuery plug-in - lze z jakéhokoli prvku
$('#container').toLeft();
})
děkuji, pro mě je jquery nový "jazyk", takže tvůj příspěvek byl pro mě "naučný" => hlavně jak si vytvořit ten plugin...
Zobrazeno 6 zpráv z 6.