function 的这个 $(this) 怎么不是当前,而是 Window,怎么让他是当前
html
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script type="text/javascript" src="jquery-1.11.2.min.js"></script> </head> <body> <div onClick="zhangkai(0)">打开</div> <script> function zhangkai(id){ var wz = $(this).html(); console.log(wz); console.log($(this)); } </script> </body> </html>
this
总是指向当前函数的调用者。例如:
javascript
function f(){ console.log(this.foo); } window.foo = 'window'; var obj = { foo: 'obj', func: f }; window.f(); // window f(); // window,与window.f()完全等效 obj.func(); // obj
另外一个点在于:在浏览器环境下,全局变量、函数会成为window
的属性。浏览器中的window
相当于服务器(比如CommonJS)中的global
。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.11.2.min.js"></script>
<script>
$(function(){
$('div').on("click",function(){
var wz = $(this).html();//此时的this就是你想要的
console.log(wz);
console.log($(this));
//或者
//zhangkai.call(this,0);
});
});
function zhangkai(id){
var wz = $(this).html();
console.log(wz);
console.log($(this));
}
</script>
</head>
<body>
<div>打开</div>
</body>
</html>
来,兄弟,把他看完你就懂了:http://www.cnblogs.com/sharpxiajun/p/4148932.html
你可以试试在onclick()把this传进来,或者在js里监听事件
可以这样
<div onClick="zhangkai(this)">打开</div>
const zhangkai = (this) => {
// code
}
或者这样
<div id="zhangkai">打开</div>
let zhangkai = document.getElementById('zhangkai');
zhangkai.onclick(() => {
// code
})