简体   繁体   English

纯 JavaScript 相当于 JQuery $(this)

[英]Pure JavaScript equivalent of JQuery $(this)

I am giving a simple example of jQuery code below:我在下面给出一个简单的 jQuery 代码示例:

$(".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.单击带有“黑色”css class 的元素时,特定元素的(此)颜色变为红色。

Now, how the above code can be written in pure JavaScript?现在,如何用纯 JavaScript 编写上面的代码? Please tell me the JavaScript equivalent of Jquery $(this) when it is used against a class selector.当它用于 class 选择器时,请告诉我 JavaScript 相当于 Jquery $(this) 。

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 没有$(this)纯javascript等效项,因为$()返回jQuery对象。...相反,您必须使用纯javascript构造来完成类似的操作

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";
    })
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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