Reputation:
I need to get the parentNode of a clicked element in plain JS (no jQuery or other frameworks)
I am currently using document.getElementById("item_click")
but I want to change id="item_click"
to class="item_click"
so I can use multiple boxes.
I just don't know how to integrate this
in the script
Here's a Fiddle <<< play with it
HTML
<div class="item">
<div class="item-tester" >
<div class="item-icon"></div>
<div class="item-title">Item Title</div>
</div>
<div id="item_click" onmousedown="new_class(event)" onmouseup="revert_class(event)" onmouseout="revert_class(event)"></div>
</div>
JS
function new_class(event) {
wClick = document.getElementById("item_click");
wTile = wClick.parentNode;
wTile.className = wTile.className + " added-class";
}
function revert_class(event) {
wTile.className = "item";
}
I want to change
wClick = document.getElementById("item_click");
wTile = wClick.parentNode;
to something like
wClick = this;
wTile = wClick.parentNode;
I know how to do this in jQuery but it will not work in plain JS as this
would be the window
(I think)
BTW. I need the (event) since this is just a stripdown of the entire code I'm using.
Upvotes: 13
Views: 59393
Reputation: 19329
You can just use event.target.parentNode
(Don't need to even pass the event
in the function):
function new_class() {
var parent = event.target.parentNode;
// Do whatever...
}
Upvotes: 5
Reputation:
"I just don't know how to integrate
this
in the script"
Use .call()
to invoke the handler to set its this
value to the element that has the handler...
<div id="item_click" onmousedown="new_class.call(this,event)" ...>
function new_class(event) {
var wTile = this.parentNode;
wTile.className = wTile.className + " added-class";
}
Upvotes: 2
Reputation: 888
function new_class(event) {
wTile = event.target.parentNode;
wTile.className = wTile.className + " added-class";
}
Upvotes: 26