简体   繁体   中英

Pure JavaScript equivalent of JQuery $(this)

I am giving a simple example of jQuery code below:

$(".black").on("click", function() {
    $(this).css("color", "red");
});

When an element with 'black' css class is clicked, the particular element's (this) color turns to red.

Now, how the above code can be written in pure JavaScript? Please tell me the JavaScript equivalent of Jquery $(this) when it is used against a class selector.

var blacks = document.getElementsByClassName('black');

for(var i =0; i< blacks.length; i++){
    blacks[i].onclick = function(){ 
        this.style.color = 'red';
    }
}

  var blacks = document.getElementsByClassName('black'); for(var i =0; i< blacks.length; i++){ blacks[i].onclick = function(){ this.style.color = 'red'; } } 
 <div class="black">test</div> <div class="black">test</div> <div class="black">test</div> 

There is no pure javascript equivalent of $(this) as $() returns a jQuery object.... instead you have to use pure javascript constructs to do the same like

function handler() {
    this.style.color = 'red';
}

var els = document.getElementsByClassName('');
for (var i = 0; i < els.length; i++) {
    els[i].addEventListener('click', handler, false)
}

 function handler() { this.style.color = 'red'; } var els = document.getElementsByClassName('black'); for (var i = 0; i < els.length; i++) { els[i].addEventListener('click', handler, false) } 
 <div class="black">1</div> <div class="black">2</div> <div class="black">3</div> <div class="black">4</div> <div class="black">5</div> 

您可以像这样设置css属性:

this.style.color = "red";

Shorter version

[].forEach.call(document.querySelectorAll('.black'), function(el) {
    el.addEventListener('click', function() {
        el.style.color="red";
    })
})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM