jquery 代码this的用法
如下的一段代码有什么问题,请指教:带注释的地方有问题
var thisPage = {
initialize: function () {
this.initializeDom();
this.initializeEvent();
},
initializeDom: function () {
this.$ipreadws = $("#ipreadws");
this.$slRmd = $("#slRmd");
this.$slRField = $("#slRField");
this.$divResult = $("#divconsole");
},
initializeEvent: function () {
this.$ipreadws.bind("blur", this.onInputReadMouseout.proxy(this));
this.$slRmd.click(function (event) {
if (this.$ipreadws.val() != "") {
alert('click me ');
$.get("../Logic/Excutews.ashx", { "wstype": "read", "url": this.$ipreadws.val() }, function (data) {
alert(data);
$divResult.innerText(data);////////////////////////就是这行有问题,打了断点,但是貌似运行不到
});
}
} .proxy(this));
},
onInputReadMouseout: function () {
if (this.$ipreadws.val() === "") {
alert("请输入读服务地址!");
}
}
}
$(thisPage.initialize());
上面那句 $divResult.innerText(data);有问题不能正常运行
------解决方案--------------------
$divResult.innerText(data);////////////////////////就是这行有问题,打了断点,但是貌似运行不到
运行不到可能是没有执行函数,或者函数前面出错之类,当然也可能是调试方式错误
判断是代码出错,这儿的$divResult是指前面的this.$divResult么?
不能这样访问,当然用this.$divResult访问也是不行的,因为这儿this应该指代window
这样改:
var _this=this;
$.get("../Logic/Excutews.ashx", { "wstype": "read", "url": this.$ipreadws.val() }, function (data) {
alert(data);
_this.$divResult.innerText(data);/////////
});
那为什么$.get传参时候,用this.$ipreadws.val() 可以呢
这个就需要经验加理解了,作用域与回调函数内的确是不同的,传参时this指代还是thisPage,但在回调函数中this指代window了(因为由thisPage调用);
还有一问,我刚开始引用了1.7.2 版本的jquery库文件,但是我修改成1.8.0 <script src="../js/jquery-1.8.0.js" type="text/javascript"></script>之后,编译的时候还用的是1.7.2 的,这是为何呢?
这个挺奇怪,没遇到过这种情况,是浏览器缓存造成的?