Existuje nejaký spôsob, ako získať ID prvku, ktorý vyvolá udalosť?
Mám na mysli niečo ako:
<html>
<head>
<script type="text/javascript" src="starterkit/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("a").click(function () {
var test = caller.id;
alert(test.val());
});
});
</script>
</head>
<body>
<form class="item" id="aaa">
<input class="title"></input>
</form>
<form class="item" id="bbb">
<input class="title"></input>
</form>
</body>
</html>
Samozrejme s tým, že var test
by mal obsahovať id "aaa"
, ak je udalosť vyvolaná z prvého formulára, a "bbb"
, ak je udalosť vyvolaná z druhého formulára.
V jQuery event.target
vždy odkazuje na prvok, ktorý udalosť spustil, pričom event
je parameter odovzdaný funkcii. http://api.jquery.com/category/events/event-object/
$(document).ready(function() {
$("a").click(function(event) {
alert(event.target.id);
});
});
Všimnite si tiež, že this
tiež funguje, ale nie je to objekt jQuery, takže ak naň chcete použiť funkciu jQuery, musíte sa naň odvolať ako na $(this)
, napr:
$(document).ready(function() {
$("a").click(function(event) {
// this.append wouldn't work
$(this).append(" Clicked");
});
});
Pomocou (this)
sa môžete odvolať na objekt, ktorý funkciu spustil.
'this'
je prvok DOM, keď sa nachádzate vo vnútri funkcie spätného volania (v kontexte jQuery), napríklad pri volaní metódami click, each, bind atď.
Tu sa môžete dozvedieť viac: http://remysharp.com/2007/04/12/jquerys-this-demystified/