这里的this指的是什么

这里的this指的是什么

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(
function($) {
var dragSrc;
$(".box").each(function(index, ele) {
$(ele).on("dragstart"function(event) {
dragSrc = this;//这个this
});
});
$("#container").on("drop"function(e) {
e.preventDefault();
$(this).removeClass("containerDrop");
$(this).append($(dragSrc).find(".line").clone())
}).on("dragover"function(e) {
e.preventDefault();
}).on("dragenter"function(e) {
e.preventDefault();
$(this).addClass("containerDrop");
}).on("dragleave"function(e) {
e.preventDefault();
 
})
}
)(jQuery)

我理解的是这个this指代的就是每一个box,然后再赋值给dragSrc,为的是下面的container调用drop方法的时候,能够将box里面的.line的克隆内容放置进去,但是我觉得奇怪的就是,为啥不用dataTransfer也可以,我听视频讲将this赋值给dragSrc这种方法也是可以指代数据传递,相当于dataTransfer?我不太明白   

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

this永远指向调用它的对象,谁调用它,它指向的就是谁,也可以在控制台里打印一下this,看它的值是什么。

祝学习愉快!


  • 西岚Silan 提问者 #1
    为啥这里不用dataTransfer?
    2017-10-13 15:53:18
  • 西岚Silan 提问者 #2
    非常感谢!
    2017-10-13 22:36:50
好帮手慕糖 2017-10-15 17:42:04

你好,这里跟循环有关于,你可以尝试把循环中的i赋值给一个变量,因为这里若使用i的话,i就是循环最后得到的数字哟。

祝学习愉快~

提问者 西岚Silan 2017-10-13 23:16:51
<ul id="card">
<li>招商信用卡</li>
<li>交通信用卡</li>
<li>中信储蓄卡</li>
<li>建行储蓄卡</li>
<li>蚂蚁花呗</li>
<li>余额宝</li>
<li>余额</li>
</ul>
function getAll(e) {
return document.getElementsByTagName(e);
}
var myli = getAll("li");
for (var i = 0; i < myli.length; i++) {
myclick(i);
}

function myclick(i) {
this.onclick = function() {//为啥这个this 指向window对象
console.log(i);
}
}

我把代码贴出来吧

小丸子爱吃菜 2017-10-13 16:34:26

课程中老师有讲也可以使用dataTransfer,只是用this是另一种方式来写,你自己也可以使用dataTransfer来写一下试试。

  • 提问者 西岚Silan #1
    我还有个问题,也是this指向问题。按照理论上讲 “this永远指向调用它的对象,谁调用它,它指向的就是谁”,那么我的疑问就是如下: 比如我有5个li; 然后我循环遍历,点击哪个就打印他的序号; for (var i = 0; i < myli.length; i++) { myclick(i); } function myclick(i) { this.onclick = function() {//为啥这个this 指向window对象 console.log(i); } } 按理说,我这么写,this指向调用他的li,但是实际上我打印出来的都是最后一个序号,我打印出this,发现他指向的是window对象,为啥
    2017-10-13 23:13:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5&CSS3进阶与常用框架 2018
  • 参与学习       315    人
  • 提交作业       136    份
  • 解答问题       626    个

如果你有H5、CSS3、JS基础,热爱前端并希望在前端应用方面不断进步,那就来吧,本路径为你带来的课程有HTML5进阶、CSS3进阶、JS面向对象、jQ基础、Less等,助你进一步提升前端开发技能

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师