我有8个搜索过滤器用户可以选择。当用户点击过滤器时,它会打开此过滤器的选项。当用户点击时,会触发函数hideFilterSearch()
。我有关于理解变量formData的范围的问题(见下文)。
$(document).ready(function() {
var formData = $("form").serialize();
});
function hideFilterSearch() {
console.log(formData);
$(".filters").hide();
newFormData = $("form").serialize();
if (formData != newFormData) {
//newFormData is sent with ajax and search results are updates
}
formData = $("form").serialize();
}
//show, hide filter changer
$('body').click(function(event) {
if (!$(event.target).closest('.filter').length) {
hideFilterChanger();
};
});
在这种情况下,控制台日志为我提供了空字符串。我还尝试将formData
作为参数()hideFilterSearch(formData)
发送,但问题是formData
将不会更新。我不确定将formData
传递给函数的正确方法是什么,但在更改函数时仍会在函数内更新它的值。
答案 0 :(得分:1)
使用全局变量。作为本地范围内的formData变量,您无法在其他函数中访问它。
将您的代码更改为以下
window.formData = $("form").serialize();
答案 1 :(得分:0)
函数可以返回值。传递formData并从函数中返回更新的一个。然后,您可以在hideFilterChanged中分配它。
$(document).ready(function(){
var formData = $("form").serialize();
function hideFilterSearch(formData){
console.log(formData);
$(".filters").hide();
newFormData = $("form").serialize();
if(formData!=newFormData){
//newFormData is sent with ajax and search results are updates
}
return $("form").serialize();
}
//show, hide filter changer
$('body').click(function(event) {
if (!$(event.target).closest('.filter').length) {
formData = hideFilterChanger(formData);
};
});
});