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.render
Layout
<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
\{{ }}