Diskuze: AJAX - neaplikuje sa javascript na aktualizovaný obsah funkciou .load()
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
hodilo by se aspon trochu toho html o kterem mluvis
Pardon, tu je. Je tam aj kus laraveláckeho blade templating enginu, ale malo by byť jasné o čo ide. Funkcie route() generuje absolútnu url adresu.
<section class="col-lg-6">
<div class="box box-success">
<div class="box-header">
<h3 class="box-title">Všetci klienti</h3>
</div>
<!-- /.box-header -->
<div class="box-body">
<!-- TABUĽKA 1 -->
<table id="clientsToAdd" class="table table-bordered table-striped clientsToAdd">
<thead>
<tr>
<th>Meno Firmy</th>
<th class="hidden-xs">Prihlasovací e-mail</th>
<th>Pridať</th>
</tr>
</thead>
<tbody>
@foreach($clients as $client)
<tr>
<td><a href="{{ route('clients.show', $client->id) }}">{{ $client->name }}</a></td>
<td class="hidden-xs">{{ $client->email }}</td>
<!-- KLIKACÍ BUTTON -->
<td><a href="{{ route('add.user', [$user->id, $client->id]) }}" class="btn btn-success btn-xs assignUserButton">Pridať</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</section>
<section class="col-lg-6">
<div class="box box-success">
<div class="box-header">
<h3 class="box-title">Priradení klienti</h3>
</div>
<!-- /.box-header -->
<div class="box-body addedClients">
<!-- TABUĽKA 2 -->
<table id="clientsToRemove" class="table table-bordered table-striped clientsToRemove">
<thead>
<tr>
<th>Meno Firmy</th>
<th class="hidden-xs">Prihlasovací e-mail</th>
<th>Odobrať</th>
</tr>
</thead>
<tbody>
@foreach($assigns as $assign)
@php( $assignedUser = \App\User::where('id', $assign->assigned_user_id)->first() )
<tr>
<td><a href="{{ route('index.clients.show', $assignedUser->id) }}">{{ $assignedUser->name }}</a></td>
<td class="hidden-xs">{{ $assignedUser->email }}</td>
<!-- KLIKACÍ BUTTON -->
<td><a href="{{ route('deAssign.user', $assign->id) }}" class="btn btn-danger btn-xs deAssignUserButton">Odobrať</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</section>
Ahoj, pokud nemáš statický obsah, nemůžeš odchytávat události tímto způsobem. U dynamického obsahu je potřeba nastavit listener trochu jiným způsobem, např.:
$(document).delegate( ".deAssignUserButton", "click", function(){
// ...
});
Popř. se to dá vyřešit i takto. Je to možná přehlednější, registruješ tady událost přes on(), které pojíš na nějaký nadřazený element (třeba body). Dále je to stejné, uvádíš typ události (click), konkrétní element, na něhož se událost váže (tlačítko) a poté funkci, která se vykoná při odchycení události.
$('body').on('click', '.deAssignUserButton', function() {
// ...
});
Moc v tom rozdiel nevidím, ale funguje to správne. Vďaka.
Tady jde o to, že tu událost musíš přiřadit něčemu, co existuje staticky (při načtení stránky je to v DOM a také to tam zůstane nadále). Když máš tlačítko na stránce pořád, stačí přiřadit událost přímo jemu. V tvém případě tlačítko do DOM přibude až v okamžiku úspěšného AJAX požadavku, takže je přidáno dynamicky. Nelze tedy přímo na něho nastavit nějakou událost. Když ji ale nastavíš nějakému rodiči, který je přítomen staticky, vše funguje v pořádku. Rodiče si totiž script při načtení najde.
Zobrazeno 7 zpráv z 7.