我在控制台上收到此错误:
Uncaught RangeError: Maximum call stack size exceeded
这是我的 jQuery 片段:
$(document).on("change","select.task_activity", function(){
selected_activity = $("select.task_activity :selected").map(function(){ return this.value });
//selected_activity = $("select.task_activity").val();
new_artifact_select = $("select.new_artifact");
/* Loads artifacts select when one or more activities are selected */
$.post("/tasks/activity_artifacts",{
activity_id: selected_activity
},function(data, status){
if (data){
options = "";
if (data.length > 0){
for (i=0; i<data.length; i++){
options += '<option value="'+data[i]['name']+'">'+data[i]['name']+'</option>';
}
}else{
options += '<option>This activity has no artifacts</option>';
}
}else{
options = '<option>Error</option>';
}
new_artifact_select.html(options);
},"json");
});
捕获更改事件时会触发错误。
这里是一段 HTML:
<select class="task_activity" name="task1">
<option value="">Select</option>
<option value="35">.........</option>
(...)
</select>
<select class="task_activity" name="task2">
<option value="">Select</option>
<option value="36">.........</option>
(...)
</select>
我需要将所选项目 ID 放入数组中。映射在 on.("change") 范围之外工作,但浏览器似乎无法接受该范围内的更多功能。
有哪些替代方案?
最佳答案
它没有显示如何使用selected_activity
,但请注意它是一个 jQuery 对象,而不是数组
问题是您可能试图将其传递给 $.post
要返回实际数组,您需要使用get()
var selected_activity = $("select.task_activity :selected").map(function(){
return this.value
}).get();
关于javascript - jQuery 中未捕获的 RangeError : Maximum call stack size exceeded when using . map 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864154/