在将对象传递给数组时,在 this.x 上给“x”一个变量值
Give "x" on this.x a variable value when passing objects to an array
我在Stackoverflow上的多个问题中看到,我可以将变量传递给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 一样,我会在每个数组对象上得到"会话"。
我完全确定,问题在于我对jquery的了解有限,以及这个关键字如何适用于这种特定方法,因为尽管我没有尝试过,但我相信如果我的json中有一个名为type的对象,this.type将采用这些值而不是this.sessions中的值。
所以首先这一行:
var type = data.type;
应该是
this.type = data.type;
在上面的代码中,"this"将引用$('.test'),即使用带有类'test'的dom元素创建的jQuery对象。
对于稍后的数组,您需要确保内部函数的作用域知道其父"this"上下文。这通常是通过将内部函数绑定到其父函数来完成的。
它看起来像这样
$.method = func(){}.bind(this);
另外,关于变量国家数据 = [];AND countryData[this.countryIsoCode] = this.type;
您可能需要将国家/地区数据转换为对象,以便
var countryData = {};
我建议阅读数组和对象之间的差异,即 [] 与 {}。
相关文章:
- 替换另一个变量对象中的变量值
- 将变量值从一个javascript传递到另一个javascript
- 如何将变量值附加到另一个变量
- 将变量值传递给另一个函数
- 如何在另一个函数中使用函数变量值
- 在 1 个方法中增加变量值会触发另一个方法的 for 循环,欢迎任何建议
- 在将对象传递给数组时,在 this.x 上给“x”一个变量值
- 需要从视图中获取一个变量值到我的控制器中
- JS:我如何访问一个函数内的变量值,而另一个函数内部的变量值,并且两个函数属于同一个对象
- 从另一个函数获取 javascript 变量值
- 如何定义从一个函数到另一个函数的变量值
- 如何将局部变量值从一个函数传递到另一个函数
- 如何从另一个 js 文件中获取变量值
- Jquery/Javascript - 变量正在接受另一个变量值
- 在另一个脚本中应用函数后获取全局变量值
- 如何将变量值从一个控制器传递到另一个控制器
- 无法调用函数从另一个javascript文件传递变量值
- 通过AJAX发送一个PHP变量值
- 我想在jquery中使用一个变量值作为ID
- javascript在按下回车键时设置一个变量值