Wpis z mikrobloga

Dlaczego w #jquery nie da się "pracować" na DOMie załadowanym poprzez .load? Ładuję jakiś kawałek html przy pomocy .load, następnie chcę zablokować wszystkie inputy posiadające klasę .xyz. Blokują się jedynie pola które istniały od początku załadowania htmla, a ten "dokopiowany" już nie. Jest metoda na obejście tego?

#programowanie #javascript
  • 6
@lutecki: niezbyt rozumiem co masz na myśli. Czy chodzi ci o taką sytuacje
1. masz dom na stronie
2. podpinasz eventy .('jakasklasa')
3. tworzysz jakieś nowe elementy na stronie z tą klasą i nie ma na nich eventów?

jeżeli tak to musisz podpiąć event wyżej czyli np. $('body').on('click', 'nazwaklasy', () => coś na clicku)
@lobo:


Następnie mamy JS który po kliknięciu jakiegoś elementu ładuje nam do diva=load kolejną część html:

$(document).ready(function(){

$('#sub-menu > ul > li').on('click', function(){
support();
});

});

Część funkcji support:

$('#repair-content').load('/Info.html', function(){

if(globalClientsEditable == 'no'){
$('.input-clients-editable input').prop('disabled', true);
}

});

I teraz: dla inputów znajdujących się wewnątrz id=load nie zostanie wykonany prop. Zostanie to zrobione tylko dla elementów które istniały podczas pierwotnego ładowania strony.
@lutecki: Czegoś nie rozumiem czy
$('.input-clients-editable input').prop('disabled', true);

jest na pewno odpalane po tym jak w load jest załadowany html

czy załadowany html na pewno ma strukturę jakiś element o klasie .input-clients-editable w którego środu kuest input?
@lobo: Tak. Kiedy zamiast klasy dam tu ustawianie atrybutu dla elementu z konkretnym ID który jest załadownay w tym .load to kod działa. Nie działa tylko dla klas i to dla tych elementów "załadowanych".