Kod w jQuery - jak zacząć?

Kod w jQuery - jak zacząć?
L8
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:99
0

Witam,

Czy ktoś może mi łopatologicznie wyjaśnić, od czego należy zacząć pisanie skryptu przy wspomaganiu się jQuery? Generalnie pytam o to, czy jQuery musi zaczynać się obowiązkowo od:

Kopiuj
$(document).ready(function() {

tu_mój_skrypt_w_czystym_JS

});

Czy można po prostu od razu jechać z kodem bez tego wyżej? Trochę brakuje mi zaczepienia w postaci takiego "szkieletu" w jQuery. Próbowałem ubrać w wyżej wymieniony sposób cały mój skrypt, który tak naprawdę napisany jest przy użyciu czystego JavaScript i niestety nie działa. Czyżby miks kodu jQuery i JavaScript nie był możliwy?

AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:6 dni
  • Postów:973
0

Tę konstrukcję stosujesz gdy chcesz wykonać skrypt dopiero gdy się załaduje DOM.

Operując np. na div, który jest powyżej skryptu, który wykonujesz będzie ok. Jeśli skrypt ładujesz przed div to gdy skrypt będzie się wykonywał div jeszcze nie będzie istniał więc wtedy możesz zastosować $(document).ready co oznacza, że DOM jest załadowany (w tym ten div). Jeśli napisałem niezrozumiale to daj znać to posłużę się przykładami.


Zdalna praca dla Senior Python Developerów --> PW
L8
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:99
0

OK, jest to dla mnie w miarę zrozumiałe, ale jakbyś wrzucił kilka przykładów dla uzupełnienia, to byłbym wdzięczny :)

AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:6 dni
  • Postów:973
2

To jest okej. Jest div a potem ładujemy skrypt, który na nim operuje.

Kopiuj
<div id="test">a</div>
<script>$('#test').text('1');</script>

To jest błędne. Ładujemy skrypt, który operuje na div, który jeszcze nie istnieje.

Kopiuj
<script>
$('#test').text('1');
</script>
<div id="test">a</div>

To jest okej. Ładujemy skrypt, który wykona funkcje, która operuje na div, która wykona się dopiero jak caly dom będzie załadowany a więc div już będzie istniał.

Kopiuj
<script>
$(document).ready(function() {
	$('#test').text('1');
});
</script>
<div id="test">a</div>

Zdalna praca dla Senior Python Developerów --> PW
L8
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:99
0

OK, to jest już jasne dla mnie...a jak jest w przypadku np. funkcji, które chciałbym wywołać? Czy jesteś w stanie podać mi jakiś najprostszy przykład? Jak to zawrzeć w HTMLu i w zewnętrznym pliku .js?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
2

@Lucas83: zacznij naukę JavaScriptu od nauki samego JavaScriptu, a nie jQuery.


edytowany 1x, ostatnio: Patryk27
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 13 godzin
1

Czyżby miks kodu jQuery i JavaScript nie był możliwy?

Przecież jQuery jest napisane w js. W narzędziach deweloperskich Twojej przeglądarki (F12) masz zakładkę z konsolą. W niej wyświetlają się m.in. błędy js. Zwykle wystarczy przeczytać ze zrozumieniem ich treść,


AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:6 dni
  • Postów:973
1
Lucas83 napisał(a):

OK, to jest już jasne dla mnie...a jak jest w przypadku np. funkcji, które chciałbym wywołać? Czy jesteś w stanie podać mi jakiś najprostszy przykład? Jak to zawrzeć w HTMLu i w zewnętrznym pliku .js?

Ładowanie z zewnętrznego skryptu działa tak samo jak <script>. Jeśli masz go przed elementami to musisz poczekać aż dom będzie załadowany. Jeśli ładujesz go na końcu HTMLa (np. w body) to nie musisz czekać bo już jest załadowany. Podałem przykłady gdzie wywołujesz funkcje przecież. Jeśli masz jakieś problemy to je pokaż.


Zdalna praca dla Senior Python Developerów --> PW
L8
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:99
0

@anonimowy: mam na przykład coś takiego i chciałem przepisać to do jQuery:

Kopiuj
function parametry_paliwo() { 
	var ltr = document.getElementById("ltr"); // to w jQuery chyba mogę pominąć i odwołać się bezpośrednio do id ltr?
	var km = document.getElementById("km");	
	var mil = document.getElementById("mil");
	
	if (ltr.checked == true) { // jeśli radio btn ltr zaznaczony, to zaznaczam km, jeśli nie, to mil
		km.checked = true;		
	} else {		
		mil.checked = true;
	}
}

Czy to będzie coś takiego?

Kopiuj
$(function() {
	$("#ltr").click(function() {
		if $("#ltr").prop("checked") == true {
			$("#km").prop("checked", true);
		} else {
			$("#mil").prop("checked", true);
		}
	});
});
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:6 dni
  • Postów:973
0

No i co ci tu nie działa?


Zdalna praca dla Senior Python Developerów --> PW
L8
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 6 lat
  • Postów:99
0

OK, nie działało, ale już jest w porządku, zabrakło nawiasów:

  • zamiast
Kopiuj
if $("#ltr").prop("checked") == true
  • powinno być
Kopiuj
if ($("#ltr").prop("checked") == true)
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 13 godzin
0
Kopiuj
$(function() {
    $("#ltr").click(function() {
        $($("#ltr").prop("checked") ? "#km" : "#mil").prop("checked", true);
    });
});

albo (nie do końca robiące to samo):

Kopiuj
$(function() {
    $("#ltr").click(function() {
        $("#km").prop("checked", $("#ltr").prop("checked"));
        $("#mil").prop("checked", !$("#ltr").prop("checked"));
    });
});

edytowany 1x, ostatnio: ŁF
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:6 dni
  • Postów:973
0

Tylko te wersje są mniej czytelne


Zdalna praca dla Senior Python Developerów --> PW
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 13 godzin
0

Szczerze? Są tak samo nieczytelne, jak oryginalny kod, ale są znacznie krótsze. Jesli chcesz mieć ładnie, to widze to tak:

Kopiuj
var selectUnit = function() {
    var unitSourceCheckBox = $("#ltr");
    var unitCheckBoxId = unitSourceCheckBox.prop("checked") ? "#km" : "#mil";
    $(unitCheckBoxId).prop("checked", true);
});

var onDomLoaded = function() {
    $("#ltr").click(selectUnit);
});

$(onDomLoaded);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.