gpt4 book ai didi

jquery - Phonegap/Ripple 模拟器。 Jquery 选择器无法在对象方法内工作

转载 作者:行者123 更新时间:2023-12-01 00:27:52 25 4
gpt4 key购买 nike

也许我要疯了,但这似乎是一个很基本的事情,我现在有一个基本的phonegap应用程序编译为黑莓,但我希望能够在波纹模拟器中测试它,我的代码为了清楚起见,此处进行了更改,但请查看以下内容...

在index.html中我有以下初始化代码。

    function onLoad() {
if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) {
document.addEventListener("deviceready", onDeviceReady, false);
} else {
onDeviceReady();
}
}

function onDeviceReady() {
// Now safe to use the Cordova API
var program = new app2();
program.Login();
}
}

在index.js中是以下简单对象。

var app2 = function(){
this.Login = function() {
alert($("#project_list").html());
this.LoadContent();
}

this.LoadContent = function() {
alert($("#project_list").html());
}
}

目前,project_list 元素中只有一个字符串“test”,因此预期输出应该是:

“测试”

“测试”

除了波纹模拟器之外,它无处不在。纹波输出如下

“测试”

“未定义”

一旦我调用对象中的方法,它似乎就完全失去了 DOM,我对此感到摸不着头脑。谁能解释一下为什么会出现这种情况?

最佳答案

将代码更改为

var app2 = function(){
var that=this;
this.Login = function() {
alert($("#project_list").html());
that.LoadContent();
}

this.LoadContent = function() {
alert($("#project_list").html());
}
}

只要你写的是javascript this的含义是该this的所有者。在你的情况下,当你写this.LoadContent()时在您的this.Login()内函数, this 的所有者在this.Login()Login app2的属性(property):app2.Login 。它不是app2 .

因此,为了解决这个问题,我们将存储 this app2 的变量在var that通过这样做var that = this 。所以变量that将始终指向 app2 。其所有者是 app2 .

thatapp2 的成员变量。所以that app2 的所有其他成员变量都可以访问包括Login .

关于jquery - Phonegap/Ripple 模拟器。 Jquery 选择器无法在对象方法内工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com