Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 14. 11. 2016, 10:40:56
-
Ahoj...
pomohl by mi někdo objasnit proč:
if ( $('#id1').is(':checked') && $("#id2").hover ) {
alert ("ahoj");}
se vykoná i když není provedena druhá podmínka
$('#id1').is(':checked') && $("#id2").hover (function(){
alert("Ahoj")
});
se vykoná pouze když jsou splněny obě dvě podmínky
zajimal by mne zpusob, jak si nejlepe vynutit, že k "akci" má dojít, jen za splnění všech podmínek
-
Nejsem nijak velký expert na jquery, ale IMHO
$("#id2").hover
je funkce, takže efektivně "true" = druhá podmínka je splněna.
-
zjistil jsem, že pokud je v podmínce if volána funkce tak se ověřují všechny podmínky:
if ( $('#id1').is(':checked') && $("#Iid2").hover (function() {
alert("ahoj");
})
);
pokud není akce wrapnuta do funkce, provede se akce i za splnění pouze první podmínky:
if ( $('#id1').is(':checked') && $("#id2").hover ) {
alert ("ahoj");
}
-
Nechtěl jsi testovat tohle?
if ( $('#id1').is(':checked') && $("#id2:hover") ) {
alert ("ahoj");}
Jak zde už někdo psal, $("...").hover je funkce a ta se vždy vyhodnocuje jako true.
-
Musis tam dat
$("#id2").is(":hover")
chces preci testovat jestli je stav hover, ne jestli libovlna funkce existuje .
-
Nechtěl jsi testovat tohle?
if ( $('#id1').is(':checked') && $("#id2:hover") ) {
alert ("ahoj");}
Jak zde už někdo psal, $("...").hover je funkce a ta se vždy vyhodnocuje jako true.
oprava:
if ( $('#id1').is(':checked') && $("#id2:hover").length ) {
alert ("ahoj");}
-
Musis tam dat
$("#id2").is(":hover")
chces preci testovat jestli je stav hover, ne jestli libovlna funkce existuje .
Máš pravdu, napsal jsem to špatně. Dík za opravu.
-
Hmmm... Možná starý a nudný způsob by pomohl najít problém dříve - svého času to byl dobrý zvyk programátorů:
Pseudo kód:
bool bCondition1 = something
bool bCondition2 = something
if (bCondition1 && bCondition2) then do something
Debug kód pomůže najít chybu velice rychle, release kód to stejně zoptimalizuje do "téměř" ideální podoby...
-
Hmmm... Možná starý a nudný způsob by pomohl najít problém dříve - svého času to byl dobrý zvyk programátorů:
Pseudo kód:
bool bCondition1 = something
bool bCondition2 = something
if (bCondition1 && bCondition2) then do something
Debug kód pomůže najít chybu velice rychle, release kód to stejně zoptimalizuje do "téměř" ideální podoby...
Je to úplně jedno. V debuggeru si mohu zobrazit hodnotu výrazu stejně jako proměnné.
-
V podstate na takove pripady je dobra konzole a otestovat jednotlive operandy podminky. Jeho spatny vyraz v podstate delal tohle:
(function(){}) ? console.log('ano') : console.log('ne');
Protoze JS neni strong type jazyk, tak jako fallback se i existence objektu vyhodnoti jako true. I kdyz hodnota sama o sobe true neni.
-
hosi ono je uplne jedno zda je v podmince .hover ; is(":hover")
ty podminky se overuji spravne jen kdyz je akce uvnitr funkce..
zkuste si to tady:
https://jsfiddle.net/1Lfo3ybh/1/
-
A nemyslíte to náhodou takhle?
$("#id2").hover (function() {
if ($("#id1").is(":checked"))
alert("Ahoj");
}, function() {});
Tzn. zaregistruju funkci, která udělá to, že když je vjedu na #id2, zkontroluje podmínku, jestli je #id1 čeknutý a když je, tak to hodí alert.
Jestli to chcete jednorázově ověřovat, tak řešení od brendana dává největší smysl.
-
A nemyslíte to náhodou takhle?
$("#id2").hover (function() {
if ($("#id1").is(":checked"))
alert("Ahoj");
}, function() {});
Tzn. zaregistruju funkci, která udělá to, že když je vjedu na #id2, zkontroluje podmínku, jestli je #id1 čeknutý a když je, tak to hodí alert.
Jestli to chcete jednorázově ověřovat, tak řešení od brendana dává největší smysl.
přesně takto jsem to již přepsal...jasné, funkční..aspon pro mne tedy