Horváth Győző
Egyetemi adjunktus
1117 Budapest, Pázmány Péter sétány 1/c., 2.420-as szoba
Tel: (1) 372-2500/1816
horvath.gyozo@inf.elte.hu
Útmutató
DOM programozás
Eseményvezérelt alkalmazások
Események
DOM absztrakció
$('p').hide();
$("#profilkep");
$(".adat");
$("li");
$("div.adat");
$("#profilkep, #adatok");
$("img[src=profil.jpg]");
$("ul li.adat b");
$("ul li:first");
$("b:contains('Végzettség:')");
children()), leszármazottak (find())parent(), parents(), parentsUntil()), legközelebbi ős (closest())siblings(), next(), nextAll(), nextUntil(), prev(), prevAll(), prevUntil())// szülő kiválasztása
$("#adatok").parent();
// a következő elem kiválasztása
$("li").next();
// az előző elem kiválasztása
$("li").prev();
// az előző elem kiválasztása, de csak ha adat osztályú
$("li").prev(".adat");
// az elem felmenői közül az első, amelyikre igaz, hogy div
$("b:first").closest('div');
// az elem leszármazottai, melyekre igaz, hogy adat osztályúak
$("#adatok").find(".adat");
// a kiválasztott elemek közül az első
$("li").first();
// a kiválasztott elemek közül az utolsó
$("li").last();
// a kiválasztott elemek közül a harmadik
$("li").eq(2);
// az elem azon testvérei, melyek h1 típusúak
$("#adatok").siblings("h1");
is(), has(), filter(), first(), last())add())//Szűrés
// az elem jQuery objektumához hozzáadjuk az összes li-t is
$("#adatok").add("li");
// a választásból kivesszük az összes li típusút
$("#adatok, li").not("li");
// a kiválasztott elemekből csak a képek maradnak
$(".adat").filter("img");
//Visszalépéses szelekció
$("#adatok") // hatókör: div#adatok
.find("li") // hatókör: div#adatok
.css({ padding: "5px" }) // hatókör: div#adatok li
.find("b") // hatókör: div#adatok li
.html('Csak a címeket hackoltam meg!!!') // hatókör: div#adatok li b
.end() // hatókör: div#adatok li b
.end() // hatókör: div#adatok li
.animate({ paddingTop: '+=100' }, 200);
var cimkek = [];
$("b").each(function() {
cimkek.push( $(this).text().replace(':','') );
});
cimkek.join(', ');
jQuery(HTMLString))clone())append(), prepend(), after(), before(), appendTo(), prependTo(), insertAfter(), insertBefore(), replace())remove(), detach())html(), text())attr())//Új jQuery objektumok létrehozása
var $a = $("<a class='12a' href='index.html'><b>Béla, Bulcsú</b></div>");
// Hasonló elemdefiníció attribútum-objektummal:
var $a = $("<a />", {
className: '12a',
href: 'index.html',
html: '<b>Béla, Bulcsú</b>'
});
//Attribútum és tartalom módosítása
$("<a />")
.addClass('12a')
.attr('href', 'index.html')
.html('<b>Béla, Bulcsú</b>')
.appendTo($("body"));
$("body").find('.12a').attr('href'); // => 'index.html'
$("body").find('.12a').html(); // => '<b>Béla, Bulcsú</b>', HTML tartalom
$("body").find('.12a').text(); // => 'Béla, Bulcsú', tartalom tag-ek nélkül
//jQuery objektumok beillesztése és törlése
$a.appendTo($("body")); // $a beillesztése a body végére
$a.prependTo($("body")); // $a beillesztése a body elejére
$a.insertAfter($("#adatok")); // $a beillesztése az adatok id-jű div után
$a.insertBefore($("#adatok")); // $a beillesztése az adatok id-jű div elé
$a.remove(); // $a elem törlése
//Ugyanez másik szemszögből
$("body").append($a); // A body végére illeszti a $a-t
$("body").prepend($a); // A body elejére illeszti a $a-t
$("#adatok").after($a); // Az adatok id-jű div után illeszti a $a-t
$("#adatok").before($a); // Az adatok id-jű div elé illeszti a $a-t
css()addClass(), removeClass(), toggleClass(), hasClass()animate()show(), hide(), toggle()fadeIn(), fadeOut(), fadeToggle()slideDown(), slideUp(), slideToggle()height(): számított magasságinnerHeight(): magasság + bélésouterHeight(): magasság + bélés + keret (+margó true paraméter esetén)width(), innerWidth(), outerWidth(): ld. a height függvényeitposition(): a szülőobjektumhoz viszonyított elhelyezkedés (top, left)offset(): a dokumentumhoz viszonyított elrendezés (top, left)scrollTop(), scrollLeft()$obj.on('type', fn): közvetlen hozzárendelés$obj.on('type', 'selector', fn): delegálás$('table').on('click', 'td', function (e) {
console.log(this);
console.log(e);
});
//Névterezés
$('table').on('click.myGame', 'td', function () {});
$('table').off('click.myGame', 'td', function () {});
//Még jobb
$('table').off('click.myGame').on('click.myGame', 'td', function () {});
Nem globális
res.render-ben átadni paraméterként
res.renderLayout
<head>
<!-- ... -->
{{#each stylesheets}}
<link rel="stylesheet" href="{{this}}">
{{/each}}
</head>
<body>
<!-- ... -->
{{#each scripts}}
<script src="{{this}}"></script>
{{/each}}
</body>
Konkrét oldal
res.render('errors/list', {
/* ... */
scripts: ['script1.js', 'script2.js'],
});
// server.js
var hbs = require('hbs');
var blocks = {};
hbs.registerHelper('extend', function(name, context) {
var block = blocks[name];
if (!block) {
block = blocks[name] = [];
}
block.push(context.fn(this));
});
hbs.registerHelper('block', function(name) {
var val = (blocks[name] || []).join('\n');
// clear the block
blocks[name] = [];
return val;
});
Layout
<head>
<!-- ... -->
{{{block "stylesheets"}}}
</head>
<body>
<!-- ... -->
{{{block "scripts"}}}
</body>
Konkrét oldal
{{#extend "scripts"}}
<script src="script1.js"></script>
<script src="script2.js"></script>
{{/extend}}
<!-- ... -->
Klinesoldali űrlapellenőrzés az új hiba oldalon
submit eseményee.preventDefault())bower install --save bootstrap-validator
A listaoldal táblázatát válogassuk szét státusz szerint és jelenítsük meg klön táblázatokban. A táblázatok megjelenítését vezéreljük a Bootstrap Tab komponensével.
<div>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#new" aria-controls="new" role="tab" data-toggle="tab">New</a></li>
<li role="presentation"><a href="#assigned" aria-controls="assigned" role="tab" data-toggle="tab">Assigned</a></li>
<li role="presentation"><a href="#success" aria-controls="success" role="tab" data-toggle="tab">Success</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="new">
<table class="table table-striped table-hover ">
<thead>
<tr>
<th>Időpont</th>
<th>Státusz</th>
<th>Helyszín</th>
<th>Leírás</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>qqq</td>
<td><span class="label label-danger">Új</span></td>
<td>pc6</td>
<td><span class="badge">12</span> rossz</td>
<td><a class="btn btn-default btn-sm" href="/errors/1" role="button">Megtekint</a></td>
</tr>
</tbody>
</table>
</div>
<div role="tabpanel" class="tab-pane fade" id="assigned">
<table class="table table-striped table-hover ">
<thead>
<tr>
<th>Időpont</th>
<th>Státusz</th>
<th>Helyszín</th>
<th>Leírás</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>qqq</td>
<td><span class="label label-info">Hozzárendelve</span></td>
<td>pc6</td>
<td><span class="badge">12</span> rossz</td>
<td><a class="btn btn-default btn-sm" href="/errors/1" role="button">Megtekint</a></td>
</tr>
</tbody>
</table>
</div>
<div role="tabpanel" class="tab-pane fade" id="success">
<table class="table table-striped table-hover ">
<thead>
<tr>
<th>Időpont</th>
<th>Státusz</th>
<th>Helyszín</th>
<th>Leírás</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>qqq</td>
<td><span class="label label-success">Kész</span></td>
<td>pc6</td>
<td><span class="badge">12</span> rossz</td>
<td><a class="btn btn-default btn-sm" href="/errors/1" role="button">Megtekint</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
tr) szétválogatásaul előállítása// Segítség
var statusClasses = {
'new': 'danger',
'assigned': 'info',
'success': 'success',
'rejected': 'default',
'pending': 'warning',
};
// Cél táblázat
'<div role="tabpanel" class="tab-pane fade" id="">' +
'<table class="table table-striped table-hover">' +
'<thead>' +
'<tr>' +
'<th>Időpont</th>' +
'<th>Státusz</th>' +
'<th>Helyszín</th>' +
'<th>Leírás</th>' +
'<th></th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'</tbody>' +
'</table>' +
'</div>'
bower install --save handlebars\{{ }}