我的布局类似于:
<div id="..."><img src="..."></div>
Run Code Online (Sandbox Code Playgroud)
并希望使用jQuery选择器来选择点击img
内的子项div
.
为了得到div
,我有这个选择器:
$(this)
Run Code Online (Sandbox Code Playgroud)
如何让孩子img
使用选择器?
我有一个构造函数,它注册一个事件处理程序:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', function () {
alert(this.data);
});
}
// Mock transport object
var transport = {
on: function(event, callback) {
setTimeout(callback, 1000);
}
};
// called as
var obj = new MyConstructor('foo', transport);
Run Code Online (Sandbox Code Playgroud)
但是,我无法data
在回调中访问已创建对象的属性.它看起来this
并不是指创建的对象,而是指另一个对象.
我还尝试使用对象方法而不是匿名函数:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', this.alert);
}
MyConstructor.prototype.alert = function() {
alert(this.name);
};
Run Code Online (Sandbox Code Playgroud)
但它表现出同样的问题.
如何访问正确的对象?
我注意到,似乎没有明确解释this
关键字是什么以及如何在Stack Overflow站点上的JavaScript中正确(和错误地)使用它.
我亲眼目睹了一些非常奇怪的行为,并且无法理解为什么会发生这种行为.
this
工作如何以及何时使用?
在AngularJS主页的"创建组件"部分中,有以下示例:
controller: function($scope, $element) {
var panes = $scope.panes = [];
$scope.select = function(pane) {
angular.forEach(panes, function(pane) {
pane.selected = false;
});
pane.selected = true;
}
this.addPane = function(pane) {
if (panes.length == 0) $scope.select(pane);
panes.push(pane);
}
}
Run Code Online (Sandbox Code Playgroud)
注意如何select
添加方法$scope
,但是addPane
添加了方法this
.如果我将其更改为$scope.addPane
,则代码会中断.
文档说实际上存在差异,但没有提到差异是什么:
以前版本的Angular(pre 1.0 RC)允许您
this
与该$scope
方法互换使用,但现在不再是这种情况了.内的方法上的范围限定this
并且$scope
是可互换的(角套this
到$scope
),但是不另外你的控制器构造内部.
如何this
和$scope
在AngularJS控制器的工作?
有什么区别
var A = function () {
this.x = function () {
//do something
};
};
Run Code Online (Sandbox Code Playgroud)
和
var A = function () { };
A.prototype.x = function () {
//do something
};
Run Code Online (Sandbox Code Playgroud) 我目前正在学习本教程:jQuery入门
对于以下两个示例:
$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {
this.reset();
});
});
Run Code Online (Sandbox Code Playgroud)
请注意,在第一个示例中,我们使用$(this)
在每个li
元素中附加一些文本.在第二个示例中,我们this
在重置表单时直接使用.
$(this)
似乎比使用频率更高this
.
我的猜测是在第一个例子中,$()
将每个li
元素转换为理解append()
函数的jQuery对象,而在第二个示例中reset()
可以直接在表单上调用.
基本上我们需要$()
特殊的jQuery功能.
它是否正确?
是什么区别getContext()
,getApplicationContext()
,getBaseContext()
,和" this
"?
虽然这是一个简单的问题,但我无法理解它们之间的基本区别.如果可能,请举出一些简单的例子.
在JavaScript文件中,我看到:
function Somefunction(){
var that = this;
...
}
Run Code Online (Sandbox Code Playgroud)
声明that
和分配给它的目的是什么this
?
我遇到过几个C#代码实例,如下所示:
public static int Foo(this MyClass arg)
Run Code Online (Sandbox Code Playgroud)
this
在这种情况下,我无法找到关键字含义的解释.任何见解?
有很多关于这两种背景的帖子......但我仍然没有把它弄得恰到好处
据我所知到目前为止:每个都是它的类的一个实例,这意味着一些程序员建议你this.getApplicationContext()
尽可能经常使用,以免"泄漏"任何内存.这是因为另一个this
(获取Activity
实例上下文)指向Activity
每次用户倾斜手机或离开应用程序等时被销毁的内容.显然垃圾收集器(GC)没有捕获,因此使用太多内存..
但是,任何人都可以提出一些非常好的编码示例,它们是正确的使用this
(获取当前Activity
实例的上下文)并且应用程序上下文将是无用的/错误的吗?
this ×10
javascript ×6
android ×2
jquery ×2
angularjs ×1
c# ×1
callback ×1
parameters ×1
prototype ×1