【问题标题】:Why are multiple objects stored after each change in a function?为什么每次更改函数后都会存储多个对象?
【发布时间】:2017-03-08 06:41:50
【问题描述】:

以这个为例:

$('select#submit_model').on('change', function(){

   model_object = {};
   console.log(model_object);

});

为什么每次我的选择更改并且函数触发时控制台都会记录一个额外的对象?

例如,第一次选择后记录 Object {},第二次选择后记录 Object {} Object {},第三次选择后记录 Object {} Object {} Object {} - 依此类推。

我想知道这是因为我有条件选择输入,并且根据用户选择的内容填充数据,但是在每个“更改”函数之后,在我的对象之前添加了一个空数组(类似问题) - 然后是我的函数可能会在进一步“更改事件”后中断,因为它正在尝试读取一个对象,但它前面有空数组(我可以看到记录到控制台)。

我需要以某种方式清理或清除我的对象吗?为什么会这样?

感谢您的回答。

【问题讨论】:

  • model_object = {}; 放在on() 之外,并在其中添加var
  • 是否有任何东西能够重新运行整个脚本,包括 sn-p 的第一行(例如,插入带有 .html() 的标记的一部分 sn-p)?重复可能表明'change' 事件处理程序被多次绑定,并且每次发生事件时调用相同的次数。
  • 我认为你是对的 - 问题是这一切都包含在另一个 onchange 事件中,这似乎与我的示例有关。感谢您的帮助。

标签: javascript jquery json object


【解决方案1】:

我确信你在on() 中除了你所显示的之外还有更多代码。

您必须纠正您的问题,如下所示:-

var model_object = {};
$('select#submit_model').on('change', function(){

   //do your stuff with model_object

   console.log(model_object);

});

示例:-

var model_object = {};
$('select#submit_model').on('change', function(){
   model_object['selected_value'] = $(this).val();
   console.log(model_object);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="submit_model">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

注意:- 在您的代码中,每次选择框值更改时都会创建新实例(对象)。

【讨论】:

  • 谢谢你的例子,你是对的,在我的代码中,这包含在另一个更改事件中(我的错误)。这似乎把事情搞砸了。感谢您的回答并帮助我认识到我的错误。
  • @Notorious 真的很高兴为您提供帮助,并感谢您的谦虚评论。:):)
猜你喜欢
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多