将对象传递给数组时,在 this.x 上给 "x" 一个变量值
Give "x" on this.x a variable value when passing objects to an array
我在 Whosebug 上的多个问题中看到,我可以将变量传递给 this 关键字:
name = "world";
alert("Hello " + this.name);
但是,我正在努力处理以下代码:
$('.test').click(function() {
var data = $(this).data();
var type = data.type;
$('#world-map-geo1').empty();
$.getJSON('json/geoCountries-' + site + '.json', function (pushArray) {
var countryData = [];
console.log(type);
$.each(pushArray, function() {
// Following line doesn't make what I expect.
countryData[this.countryIsoCode] = this.type;
// alert(this.type)
});
console.log(countryData);
});
});
点击一个li就执行函数,f.i.:
<li class="test" data-type="sessions">Sessions</li>
我得到了未定义的值,因为 this.type 似乎没有被转换为 this.sessions。但是,如果我手动将 this.type 更改为 this.sessions,它会正常工作。
我知道这不是变量范围的问题,就像我将 this.type 替换为唯一类型一样,我在每个数组对象上得到 "sessions"。
我完全确定,问题是我对 jquery 以及此关键字如何适用于这种特定方法的了解有限,尽管我还没有尝试过,但我相信如果我有一个名为在我的 json 中键入,this.type 将采用这些值而不是 this.sessions.
中的值
首先是这一行:
var type = data.type;
应该是
this.type = data.type;
在您上面的代码中,'this' 将引用 $('.test'),即使用 dom 元素和 class 'test'.
对于您稍后拥有的数组,您将需要确保内部函数的作用域知道其父 'this' 上下文。这通常是通过将内部函数绑定到它的父函数来完成的。
看起来像这样
$.method = func(){}.bind(this);
此外,关于
var 国家数据 = []; AND countryData[this.countryIsoCode] = this.type;
您可能需要将 countryData 变成一个对象,这样
var countryData = {};
我建议阅读数组和对象之间的差异,即 [] 与 {}。
我在 Whosebug 上的多个问题中看到,我可以将变量传递给 this 关键字:
name = "world";
alert("Hello " + this.name);
但是,我正在努力处理以下代码:
$('.test').click(function() {
var data = $(this).data();
var type = data.type;
$('#world-map-geo1').empty();
$.getJSON('json/geoCountries-' + site + '.json', function (pushArray) {
var countryData = [];
console.log(type);
$.each(pushArray, function() {
// Following line doesn't make what I expect.
countryData[this.countryIsoCode] = this.type;
// alert(this.type)
});
console.log(countryData);
});
});
点击一个li就执行函数,f.i.:
<li class="test" data-type="sessions">Sessions</li>
我得到了未定义的值,因为 this.type 似乎没有被转换为 this.sessions。但是,如果我手动将 this.type 更改为 this.sessions,它会正常工作。
我知道这不是变量范围的问题,就像我将 this.type 替换为唯一类型一样,我在每个数组对象上得到 "sessions"。
我完全确定,问题是我对 jquery 以及此关键字如何适用于这种特定方法的了解有限,尽管我还没有尝试过,但我相信如果我有一个名为在我的 json 中键入,this.type 将采用这些值而不是 this.sessions.
中的值首先是这一行:
var type = data.type;
应该是
this.type = data.type;
在您上面的代码中,'this' 将引用 $('.test'),即使用 dom 元素和 class 'test'.
对于您稍后拥有的数组,您将需要确保内部函数的作用域知道其父 'this' 上下文。这通常是通过将内部函数绑定到它的父函数来完成的。
看起来像这样
$.method = func(){}.bind(this);
此外,关于 var 国家数据 = []; AND countryData[this.countryIsoCode] = this.type;
您可能需要将 countryData 变成一个对象,这样
var countryData = {};
我建议阅读数组和对象之间的差异,即 [] 与 {}。