我正在尝试将data
属性值推送到数组参数,但它会在行参数[parent] .push(parent);
var parameter = {};
var currentTabSelected = "";
var parent = "";
$("#categories").on("click", ":checkbox", function () {
if($(this).is(":checked")) {
parent = $(this).data("parent");
console.log(parent)
if (!(currentTabSelected in parameter)) {
parameter[currentTabSelected] = []
}
var found = $.inArray($(this).val(), parameter[currentTabSelected]) > -1;
if (!found) {
parameter[currentTabSelected].push($(this).val());
parameter[parent].push(parent);
console.log(parameter)
}
} else {
var index = parameter[currentTabSelected].indexOf($(this).val());
var parent_index = parameter[parent].indexOf(parent)
if (index > -1) {
parameter[currentTabSelected].splice(index, 1);
parameter[parent].splice(parent_index , 1);
}
}
})
我该怎么做才能克服上述问题?
答案 0 :(得分:2)
如果参数是对象,则应在使用之前创建密钥。 您正尝试访问参数中不存在的密钥。
例如,确保您的对象包含 currentTabSelected
和parent
:
parameter[currentTabSelected] = []
parameter[parent] = []
初始化currentTabSelected
和parent
后,您可以对parameter[currentTabSelected]
,parameter[parent]
执行操作。
答案 1 :(得分:-1)
前几天我遇到了同样的问题,解决方案直接与“这个问题”有关。关键词。你的这个'是指您的变量不属于的另一个范围。你可能想做一个
var that=this;
或者,如果您对ES6感到满意,可以使用箭头功能语法。